在Android上将文本转换为图像文件

我有一个文本文件(.txt)。 我想将其转换为图像(.png或.jpg)。 例如,在白色背景的黑文本。 我该如何以编程方式执行此操作?

这个(未经测试的)代码可以让你走上正确的轨道。

void foo(final String text) throws IOException{ final Paint textPaint = new Paint() { { setColor(Color.WHITE); setTextAlign(Paint.Align.LEFT); setTextSize(20f); setAntiAlias(true); } }; final Rect bounds = new Rect(); textPaint.getTextBounds(text, 0, text.length(), bounds); final Bitmap bmp = Bitmap.createBitmap(bounds.width(), bounds.height(), Bitmap.Config.RGB_565); //use ARGB_8888 for better quality final Canvas canvas = new Canvas(bmp); canvas.drawText(text, 0, 20f, textPaint); FileOutputStream stream = new FileOutputStream(...); //create your FileOutputStream here bmp.compress(CompressFormat.PNG, 85, stream); bmp.recycle(); stream.close(); } 

我认为多行文本的正确方法是这样的:

 String text = "This \nis \nmultiline"; final Rect bounds = new Rect(); TextPaint textPaint = new TextPaint() { { setColor(Color.WHITE); setTextAlign(Paint.Align.LEFT); setTextSize(20f); setAntiAlias(true); } }; textPaint.getTextBounds(text, 0, text.length(), bounds); StaticLayout mTextLayout = new StaticLayout(text, textPaint, bounds.width(), Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); int maxWidth = -1; for (int i = 0; i < mTextLayout.getLineCount(); i++) { if (maxWidth < mTextLayout.getLineWidth(i)) { maxWidth = (int) mTextLayout.getLineWidth(i); } } final Bitmap bmp = Bitmap.createBitmap(maxWidth , mTextLayout.getHeight(), Bitmap.Config.ARGB_8888); bmp.eraseColor(Color.BLACK);// just adding black background final Canvas canvas = new Canvas(bmp); mTextLayout.draw(canvas); FileOutputStream stream = new FileOutputStream(...); //create your FileOutputStream here bmp.compress(CompressFormat.PNG, 85, stream); bmp.recycle(); stream.close(); 

这就是你需要的:

http://sofzh.miximages.com/java/tputStream; import java.io.OutputStream; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import org.apache.xmlgraphics.image.codec.png.PNGImageEncoder; public class Deneme { public static void main(String[]args){ JFrame jf = new JFrame(); jf.setVisible(true); JPanel jp = new JPanel(); jf.add(jp); JLabel jl = new JLabel(“trial text”); jf.add(jl); jf.setSize(300, 200); JFileChooser jfc = new JFileChooser(); int temp = jfc.showSaveDialog(jfc); if (temp == JFileChooser.APPROVE_OPTION) { System.out.println(jfc.getSelectedFile()); Component myComponent = jf; Dimension size = myComponent.getSize(); BufferedImage myImage = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB); Graphics2D g2 = myImage.createGraphics(); myComponent.paint(g2); try { OutputStream out = new FileOutputStream(jfc .getSelectedFile().getAbsolutePath() + “.png”); PNGImageEncoder encoder = new PNGImageEncoder(out, null); encoder.encode(myImage); out.close(); } catch (Exception e) { System.out.println(e); } } } }