怎么将一个String字符串(含中文)生成成一副图片(jpg格式最好)?盼各位指点一二!!!

micstart 2004-12-22 08:54:02
代码如下,但生成的图片一片漆黑,背景设过也没用,不知道到底错在那里?
import java.io.File;
import java.io.FileOutputStream;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.awt.Color;
import java.awt.Font;
import java.awt.Paint;

public class JpgTest
{
public static void JpgTest() throws Exception
{
String temp="hello";
int wideth=800;
int height=600;

BufferedImage tag = new BufferedImage(wideth,height,BufferedImage.TYPE_INT_RGB);


tag.createGraphics().drawString(temp,wideth,height);
FileOutputStream out=new FileOutputStream("src/test/cp35/common/newfile.jpg");//输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag);//近JPEG编码
out.close();
}

public static void main(String[] s)
{
try
{
JpgTest();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
...全文
129 点赞 收藏 20
写回复
20 条回复
micstart 2004年12月22日
再问:能不能加背景图片呢?
回复 点赞
micstart 2004年12月22日
晕倒,怎么结贴?在"我在csdn社区提出的问题"->点"管理"
怎么没看到结贴的按钮啊
?
回复 点赞
micstart 2004年12月22日
over!
回复 点赞
oceanskywang 2004年12月22日
改变字体大小的方法,可调用下面的代码

//=====增加开始
Graphics g = tag.getGraphics();
g.setColor(Color.orange);
g.fillRect(0,0,wideth,height);
g.setColor(Color.blue);
//根据参数创建不同大小和风格的字体
java.awt.Font font = new java.awt.Font("宋体",Font.PLAIN,40);
g.setFont(font);
g.drawString(temp, wideth/2, height/2);
//======增加结束
回复 点赞
micstart 2004年12月22日
谢谢各位
回复 点赞
虎叔 2004年12月22日
Graph的渲染问题:
画板渲染过程是上下文相关的。你只需要设置画板的字体即可,包括其它的渲染设置。
回复 点赞
micstart 2004年12月22日
结贴了,搞定了,谢谢各位好同志!!!
回复 点赞
micstart 2004年12月22日
有啊,但font不会用啊
回复 点赞
huangdeji 2004年12月22日
你看一下drawString方法有没有带字体大小参数的嘛
回复 点赞
micstart 2004年12月22日
大宝哥哥再来支援哈子啊!
回复 点赞
huangdeji 2004年12月22日
错了10,10
回复 点赞
huangdeji 2004年12月22日
0,0在图片的左上角写的啊,你写0,10 试一下
回复 点赞
micstart 2004年12月22日
字体的大小怎么调整下啊?
回复 点赞
huangdeji 2004年12月22日
JPEGImageEncoder流可以生成任何类型的图片吗?
回复 点赞
micstart 2004年12月22日
谢谢!果然是这个问题,我改成tag.createGraphics().drawString(temp,0,0);怎么也不行啊?
回复 点赞
oceanskywang 2004年12月22日
你的代码稍作改动,就可以了:
=======================================================================
public class JpgTest
{
public static void JpgTest() throws Exception
{
String temp="hello";
int wideth=800;
int height=600;

BufferedImage tag = new BufferedImage(wideth,height,BufferedImage.TYPE_INT_RGB);
//=====增加开始
Graphics g = tag.getGraphics();
g.setColor(Color.orange);
g.fillRect(0,0,wideth,height);
g.setColor(Color.blue);
g.drawString(temp, wideth/2, height/2);
//======增加结束


//这句话删掉 -〉tag.createGraphics().drawString(temp,wideth,height);

FileOutputStream out=new FileOutputStream("src/test/cp35/common/newfile.jpg");//输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag);//近JPEG编码
out.close();
}

public static void main(String[] s)
{
try
{
JpgTest();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
回复 点赞
oceanskywang 2004年12月22日
楼主,你代码的大致逻辑没有错,只是这句话有点问题:
tag.createGraphics().drawString(temp,wideth,height);
这句话实际上是从绘制区的右下角开始画字符串,当然看不见啦。
这样一改就能够看见绘制出的字符串了:
tag.createGraphics().drawString(temp,wideth/2,height/2);


回复 点赞
zedk928 2004年12月22日
看上去好象蛮好用的样子
回复 点赞
tatalosi 2004年12月22日
我帮你顶顶哈
回复 点赞
micstart 2004年12月22日
...没人顶,自己顶哈子,小心沉下去了...
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告