以前用.Net开发的时候,做过一次缩略图的功能
缩出来的图如下:现在用Java开发了,又碰到这个功能:
缩出来的图如下:
老板说。java的缩略图不够柔和,谁能告诉我怎么把图变柔和啊?我的java代码如下:
File _file = new File(request.getSession().getServletContext().getRealPath("/") + bfilename); //读入文件
Image src = javax.imageio.ImageIO.read(_file); //构造Image对象
BufferedImage tag = new BufferedImage(145,109,BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src,0,0,145,109,null); //绘制缩小后的图
FileOutputStream out=new FileOutputStream(request.getSession().getServletContext().getRealPath("/") + sfilename); //输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag); //近JPEG编码
out.close();
缩出来的图如下:现在用Java开发了,又碰到这个功能:
缩出来的图如下:
老板说。java的缩略图不够柔和,谁能告诉我怎么把图变柔和啊?我的java代码如下:
File _file = new File(request.getSession().getServletContext().getRealPath("/") + bfilename); //读入文件
Image src = javax.imageio.ImageIO.read(_file); //构造Image对象
BufferedImage tag = new BufferedImage(145,109,BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src,0,0,145,109,null); //绘制缩小后的图
FileOutputStream out=new FileOutputStream(request.getSession().getServletContext().getRealPath("/") + sfilename); //输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag); //近JPEG编码
out.close();
解决方案 »
- 求hql查询integer为null的方法
- 求高人解决 java.sql.BatchUpdateException: ORA-00001: 违反唯一约束条件 (SCOTT.DEPT2_PK)
- wsdl文件使用JBuilder生成客户端有错误
- c3p0问题
- Java中集合类和数组的效率等多个问题
- JMS可不可以实现服务器端的“推技术”?熟悉的人进来说说,多谢了
- 改动了哪些文件才需要重启tomcat呢?
- 关于添加 listener 的问题
- jbuilder9+jboss3.2.1+oracle9i的一个问题
- 我在做个游戏。。求各路的神提供思路啊
- servlet无法使用的问题
- struts请求转发时,转到的页面排版就乱了,不过把struts-config.xml中的<forward>属性中加 redirect 定向就对了,但是request却取不到了!!
InputStream stream2 = file.getInputStream();
BufferedImage src=ImageIO.read(stream2);//构造Image对象
int wideth=src.getWidth(null); //得到源图宽
int height=src.getHeight(null); //得到源图长
BufferedImage tag=new BufferedImage(wideth/2,height/2,BufferedImage.TYPE_INT_BGR);
tag.getGraphics().drawImage(src,0,0,wideth/2,height/2,null);//绘制缩小后的图
此外还可以google搜索lancozs
Image scaledImage=sourceImage. getScaledInstance(100,100, Image.SCALE_DEFAULT); //得到一个100X100的图像
Image doubledImage=sourceImage. getScaledInstance(sourceImage.getWidth(this)*2,sourceImage.getHeight(this)*2, Image.SCALE_DEFAULT); //得到一个放大两倍的图像,这个程序一般在一个swing的组件中使用,而类Jcomponent实现了图像观察者接口ImageObserver,所有可以使用this。
我试过了。但是缩出来的图还是很锐化,
老板说.Net的图比较钝。。我也不知道这个要怎么做。。很苦恼啊。。
谁能来指点我一下呀。。报告10楼。我不要按比例缩。谢谢啦
如果真的要做还要现学一下。。
试过CSS了。好像也不行。使图表看着模糊了。也不是钝化。
谁能帮一下呀。。
throws IOException {
Image src = javax.imageio.ImageIO.read(file); // 构造Image对象
int old_w = src.getWidth(null); // 得到源图宽
int old_h = src.getHeight(null);
int new_w = 0;
int new_h = 0; // 得到源图长
float tempdouble;
if (old_w >= old_h) {
tempdouble = old_w / width;
} else {
tempdouble = old_h / height;
} if (old_w >= width || old_h >= height) { // 如果文件小于锁略图的尺寸则复制即可
new_w = Math.round(old_w / tempdouble);
new_h = Math.round(old_h / tempdouble);// 计算新图长宽
while (new_w > width && new_h > height) {
if (new_w > width) {
tempdouble = new_w / width;
new_w = Math.round(new_w / tempdouble);
new_h = Math.round(new_h / tempdouble);
}
if (new_h > height) {
tempdouble = new_h / height;
new_w = Math.round(new_w / tempdouble);
new_h = Math.round(new_h / tempdouble);
}
}
BufferedImage tag = new BufferedImage(new_w, new_h,
BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src, 0, 0, new_w, new_h, null); // 绘制缩小后的图
FileOutputStream newimage = new FileOutputStream(file); // 输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(tag);
param.setQuality((float) (100 / 100.0), true);// 设置图片质量,100最大,默认70
encoder.encode(tag, param);
encoder.encode(tag); // 将JPEG编码
newimage.close();
}
}
---
param.setQuality((float) (100 / 100.0), true);// 设置图片质量,100最大,默认70
应该这段话可以! 自己试试吧!
String font) {
ImageIcon imgIcon = new ImageIcon(filePath);
Image theImg = imgIcon.getImage();
ImageIcon waterIcon = new ImageIcon(water);
Image waterImg = waterIcon.getImage();
int width = theImg.getWidth(null);
int height = theImg.getHeight(null);
BufferedImage bimage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = bimage.createGraphics();
g.setColor(Color.red);
Font f = new Font("黑体", Font.BOLD, 20);
g.setFont(f);
g.setBackground(Color.white);
g.drawImage(theImg, 0, 0, null);
g.drawImage(waterImg, 0, 0, null);
g.drawString(font, 0, 20); // 添加文字
g.dispose();
try {
FileOutputStream out = new FileOutputStream(filePath);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage);
param.setQuality(50f, true);
encoder.encode(bimage, param);
out.close();
} catch (Exception e) {
return false;
}
return true;
}=========怎么把图片显示在! 左下角!! g.drawImage(waterImg, 0, 0, null); 0 0 是x 和 y 坐标!大家帮我算算!