I am converting a .txt file to a .bmp file trough my java code. My .txt File contains multiple lines. I am reading every line and printing it on the image.
** My text file**
45
werwerwr
abc abc abc
xxxx
** Image(.bmp) which is getting created **
Everything gets printed in a single line like this:
45werwerwrabc abc abcxxxx
My code:
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import javax.imageio.ImageIO;
public class TextToGraphics {
public static void main(String[] args) {
try {
String storeData = "";
String data = "";
File f = new File("/home/vipul/Desktop/123.txt");
BufferedReader br = new BufferedReader(new FileReader(f));
while ((data = br.readLine()) != null) {
storeData =storeData + data +System.lineSeparator();
}
BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_3BYTE_BGR);
Graphics2D g2d = img.createGraphics();
Font font = new Font("Arial", Font.PLAIN, 24);
g2d.setFont(font);
FontMetrics fm = g2d.getFontMetrics();
int width = fm.stringWidth(storeData);
int height = fm.getHeight();
g2d.dispose();
img = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
g2d = img.createGraphics();
g2d.setPaint ( new Color ( 255, 255, 255 ) );
g2d.fillRect ( 0, 0, img.getWidth(), img.getHeight() );
System.out.println(img.getWidth()+" "+img.getHeight());
g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE);
g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
g2d.setFont(font);
fm = g2d.getFontMetrics();
g2d.setColor(Color.BLACK);
g2d.drawString(storeData, 0, fm.getAscent());
g2d.dispose();
ImageIO.write(img, "bmp", new File("/home/vipul/Desktop/123.bmp"));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
I want to make image same as the text file. If text file goes to new line then image should also have the same words on new line.
Kindly help. Thanks in advance!!!