Подтвердить что ты не робот

Можно ли программно создавать изображение на Java, Android?

Мне нужно создать файл .jpeg/.png на Android-приложении программно. У меня есть простой образ (черный фон), и ему нужно написать текст на нем программно. Как мне это сделать? Является ли это возможным?

4b9b3361

Ответ 1

Это определенно возможно.

Чтобы записать текст на изображении, вам нужно загрузить изображение в объект Bitmap. Затем нарисуйте это растровое изображение с помощью функций Canvas и Paint. Когда вы закончите рисовать, вы просто выводите битмап в файл.

Если вы просто используете черный фон, вам, вероятно, лучше просто создать пустую растровое изображение на холсте, заполнить его черным, нарисовать текст и затем сбрасывать в растровое изображение.

Я использовал этот учебник, чтобы изучить основы холста и краски.

Это код, который вы хотите, чтобы превратить холст в файл изображения:

OutputStream os = null; 
try { 
    File file = new File(dir, "image" + System.currentTimeMillis() + ".png");
    os = new FileOutputStream(file); 
    finalBMP.compress(CompressFormat.PNG, 100, os);
    finalBMP.recycle(); // this is very important. make sure you always recycle your bitmap when you're done with it.
    screenGrabFilePath = file.getPath();
} catch(IOException e) { 
    finalBMP.recycle(); // this is very important. make sure you always recycle your bitmap when you're done with it.
    Log.e("combineImages", "problem combining images", e); 
}

Ответ 3

Используя Graphics2d, вы также можете создать изображение PNG:

public class Imagetest {

    public static void main(String[] args) throws IOException {
        File path = new File("image/base/path");
        BufferedImage img = new BufferedImage(100, 100,
                BufferedImage.TYPE_INT_ARGB);

        Graphics2D g2d = img.createGraphics();

        g2d.setColor(Color.YELLOW);
        g2d.drawLine(0, 0, 50, 50);

        g2d.setColor(Color.BLACK);
        g2d.drawLine(50, 50, 0, 100);

        g2d.setColor(Color.RED);
        g2d.drawLine(50, 50, 100, 0);

        g2d.setColor(Color.GREEN);
        g2d.drawLine(50, 50, 100, 100);

        ImageIO.write(img, "PNG", new File(path, "1.png"));
    }
}