怎么将一个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();
}
}
}
...全文
222 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
...没人顶,自己顶哈子,小心沉下去了...

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧