Мне нужно создать файл .jpeg/.png на Android-приложении программно. У меня есть простой образ (черный фон), и ему нужно написать текст на нем программно. Как мне это сделать? Является ли это возможным?
Можно ли программно создавать изображение на Java, Android?
Ответ 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);
}
Ответ 2
Да, см. здесь
Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
Вы также можете использовать awt Graphics2D с этот проект совместимости
Ответ 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"));
}
}