是否可以在Java,Android上以编程方式创建图像?

use*_*177 17 java android

我需要以编程方式在我的Android应用程序上创建.jpeg/.png文件.我有简单的图像(黑色背景),它需要以编程方式在其上写一些文字.我该怎么做?可能吗?

Rev*_*ler 9

这绝对是可能的.

要在图像上写入文本,您必须将图像加载到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); 
}
Run Code Online (Sandbox Code Playgroud)


Boz*_*zho 6

是的,请看这里

Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
Run Code Online (Sandbox Code Playgroud)

您还可以将awt的Graphics2D与此兼容性项目一起使用


Sim*_*ant 6

使用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"));
    }
}
Run Code Online (Sandbox Code Playgroud)