public static void scalepic(String FileSource,String FileResult,int PicWidth)
{
try{
File file1=new File(FileSource);
Image src=javax.imageio.ImageIO.read(file1); //构造Image对象
int wideth=src.getWidth(null); //得到源图宽
int height=src.getHeight(null);//得到源图高
int PicHeight=(PicWidth*height)/wideth;//等比例缩放,高是靠长换算到的缩放值
BufferedImage tag = new BufferedImage(PicWidth,PicHeight,BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src,0,0,PicWidth,PicHeight,null); //绘制缩小后的图
try{
FileOutputStream out = new FileOutputStream(FileResult); //输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); //也就是先输出再编码
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(tag);
float quality=600f; //这句已经尽量提高画质了
param.setQuality(quality, false); encoder.encode(tag,param); //近JPEG编码
//System.out.print(width+"*"+height);
out.close();
//ImageIcon img=new ImageIcon("235.gif");
//JOptionPane pane1=new JOptionPane();
//pane1.showMessageDialog(null,"图片已修改成功","修改成功",JOptionPane.ERROR_MESSAGE,img);
}
catch(Exception ef)
{
System.out.print("输出文件路径错误");
}
}
catch(Exception em)
{
System.out.print("输入文件路径错误");
}
}缩略很成功,但我是把大图片改成500多宽的图象,对画质有要求,但无论怎么提高float quality=600f;也始终无法得到如同FW等绘图工具修改得到的缩略图画质,且差的很远希望高手指正算法,给出解决方案
{
try{
File file1=new File(FileSource);
Image src=javax.imageio.ImageIO.read(file1); //构造Image对象
int wideth=src.getWidth(null); //得到源图宽
int height=src.getHeight(null);//得到源图高
int PicHeight=(PicWidth*height)/wideth;//等比例缩放,高是靠长换算到的缩放值
BufferedImage tag = new BufferedImage(PicWidth,PicHeight,BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src,0,0,PicWidth,PicHeight,null); //绘制缩小后的图
try{
FileOutputStream out = new FileOutputStream(FileResult); //输出到文件流
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); //也就是先输出再编码
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(tag);
float quality=600f; //这句已经尽量提高画质了
param.setQuality(quality, false); encoder.encode(tag,param); //近JPEG编码
//System.out.print(width+"*"+height);
out.close();
//ImageIcon img=new ImageIcon("235.gif");
//JOptionPane pane1=new JOptionPane();
//pane1.showMessageDialog(null,"图片已修改成功","修改成功",JOptionPane.ERROR_MESSAGE,img);
}
catch(Exception ef)
{
System.out.print("输出文件路径错误");
}
}
catch(Exception em)
{
System.out.print("输入文件路径错误");
}
}缩略很成功,但我是把大图片改成500多宽的图象,对画质有要求,但无论怎么提高float quality=600f;也始终无法得到如同FW等绘图工具修改得到的缩略图画质,且差的很远希望高手指正算法,给出解决方案
Graphics2D.setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
Graphics2D.setRenderingHints(Map<?,?> hints)RenderingHints 类支持下列类型的建议:
Alpha interpolation--可设置为缺省、质量或速度。
Antialiasing--可设置为缺省、打开或关闭。
Color Rendering--可设置为缺省、质量或速度。
Dithering--可设置为缺省、禁用或启用。
Fractional Metrics--可设置为缺省、打开或关闭。
Interpolation--可设置为最近邻域、双线性或双三次。
Rendering--可设置为缺省、质量或速度。
Text antialiasing--可设置为缺省、打开或关闭。