Win a copy of Kotlin in Action this week in the Kotlin forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic

Text to Image to File  RSS feed

Saidul Islam
Posts: 18
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Sorry guys if I am posting it in the wrong forum.
I am trying to convert a text value (String) to an image (.jpg). My program seems to be working somewhat. It's creating a blank (whiite background) .jpg file, without my string value "Saidul Islam". I can open the file in any image editor. it just doesn't have the string I am trying to print.
And the strange part is that the program is not even terminating.
Here is the output I get when I run it
C:\test>java Text2Image
gets here
remove notify
it's of course printing the last line but the program is not terminating. I have been working on this since yesterday. and my brain is not functioning anymore on this. So I ask for your help.
what am I doing wrong and how do I get this working.
Here is my program-
import java.awt.*;
import java.awt.image.*;
import com.sun.image.codec.jpeg.*;

public class Text2Image {
public static void main(String args[]) {
Frame myFrame = null;
Graphics2D myGraphics = null;
try {
myFrame = new Frame();
BufferedImage buffImage = new BufferedImage(400, 200, BufferedImage.TYPE_INT_RGB);
BufferedImage buff2Image = new BufferedImage(400, 200, BufferedImage.TYPE_INT_RGB);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("text.jpg"));
Image offImage = myFrame.createImage(400, 200);
//myGraphics = buffImage.getGraphics();
myGraphics = buffImage.createGraphics();
myGraphics.setFont(new Font("Serif", Font.ITALIC, 48));
myGraphics.drawString("Saidul Islam", 10, 50);
myGraphics.drawImage(offImage, 0, 0, myFrame);
buffImage.createGraphics().drawImage(buffImage, 0, 0, myFrame);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);

//JpegEncoder jpg = new JpegEncoder(offImage, 80, bos);

System.out.println("gets here");

catch (Exception e) {
finally {
if (myGraphics != null) {
if (myFrame != null) {
System.out.println("remove notify");
} //end of main method
} //end of Text2Image class

Thanks for your help!
Nathan Pruett
Posts: 4121
IntelliJ IDE Java Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

First, let me say... Really awesome program!

I think I have fixed the problems you were having...

this line was causing the image you had created so far to be overwritten with a blank image of the same size...

I assume that you were trying to assign the image to the frame after you had created it... I couldn't find a direct way to paint a Graphics object or a BufferedImage object, so I simply saved the image first and then displayed it... The code I added isn't the best... there is no double buffering being done to keep the image from being erased in screen redraws, but this could be easily fixed by making a special class to display the image... I just used a regular canvas...

As far as the reason behind why your program would not exit... I think it is because you must specifically call System.exit if you are using any GUI elements... I think Java launches some kind of GUI manager that creates another thread that keeps all the GUI elements alive... so you have to specifically call System.exit...

On to the code...

[This message has been edited by Nathan Pruett (edited May 31, 2001).]
Saidul Islam
Posts: 18
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Nate. It worked fine. And yes it looks like I have to use System.exit(0) to break out of the program.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!