首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java 不失真创办图片等比缩略图(转)

2012-11-06 
Java 不失真创建图片等比缩略图(转)要使用无损压缩图片需要导入两个包import com.sun.image.codec.jpeg.JP

Java 不失真创建图片等比缩略图(转)
要使用无损压缩图片需要导入两个包

import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.image.codec.jpeg.JPEGCodec;

在Eclipse中可能会出现如下错误提示:

Access restriction: The type JPEGImageEncoder is not accessible due to restriction on required library C:\Java\jre1.6.0_07\lib\rt.jar

这是由于Eclipse默认把这些受访问限制的API设成了Error。

解决办法:点击Window->Preferences->Java->Compiler->Errors/Warnings->Deprecated and restricted API->Forbidden reference(access rules) 修改成Warning 即可。

/**  * 创建图片缩略图(等比缩放)  * @param src 源图片文件完整路径  * @param dist 目标图片文件完整路径  * @param width 缩放的宽度  * @param height 缩放的高度  */ public void createThumbnail(String src,String dist,float width,float height){  try{   File srcfile = new File(src);   if(!srcfile.exists()){    System.out.println("文件不存在");    return;   }   BufferedImage image = ImageIO.read(srcfile);      //获得缩放的比例   double ratio = 1.0;   //判断如果高、宽都不大于设定值,则不处理   if(image.getHeight()>height || image.getWidth()>width){     if(image.getHeight() > image.getWidth()){     ratio = height / image.getHeight();    } else {     ratio = width / image.getWidth();    }   }   //计算新的图面宽度和高度   int newWidth =(int)(image.getWidth()*ratio);   int newHeight =(int)(image.getHeight()*ratio);      BufferedImage bfImage= new BufferedImage(newWidth,newHeight,BufferedImage.TYPE_INT_RGB);   bfImage.getGraphics().drawImage(image.getScaledInstance(newWidth, newHeight,Image.SCALE_SMOOTH),0,0,null);      FileOutputStream os = new FileOutputStream(dist);   JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);   encoder.encode(bfImage);   os.close();    System.out.println("创建缩略图成功");  } catch(Exception e) {   System.out.println("创建缩略图发生异常"+e.getMessage());  } }public static void main(String[] args){ createThumbnail("D:\\1.png","D:\\a.png",100,100); createThumbnail("D:\\1.jpg","D:\\b.png",100,100); createThumbnail("D:\\1.jpg","D:\\c.jpg",100,100);}

热点排行