在网上找了两个图片的缩放类,在这里分享一下:

  1. package manager.util;
  2. import java.util.Calendar;
  3. import java.io.File;
  4. import java.awt.image.BufferedImage;
  5. import java.awt.Image;
  6. import java.awt.image.AffineTransformOp;
  7. import javax.imageio.ImageIO;
  8. import java.awt.geom.AffineTransform;
  9. public class UploadImg {
  10. String fromFileStr;
  11. String saveToFileStr;
  12. String sysimgfile;
  13. int width;
  14. int height;
  15. String suffix;
  16. /**
  17. * @param fromFileStr
  18. * 原始图片完整路径
  19. * @param saveToFileStr
  20. * 缩略图片保存路径
  21. * @param sysimgfilenNow
  22. * 处理后的图片文件名前缀
  23. *
  24. */
  25. public UploadImg(String fromFileStr, String saveToFileStr, String sysimgfile,String suffix,int width,int height) {
  26. this.fromFileStr = fromFileStr;
  27. this.saveToFileStr = saveToFileStr;
  28. this.sysimgfile = sysimgfile;
  29. this.width=width;
  30. this.height=height;
  31. this.suffix=suffix;
  32. }
  33. public boolean createThumbnail() throws Exception {
  34. // fileExtNmae是图片的格式 gif JPG 或png
  35. // String fileExtNmae="";
  36. double Ratio = 0.0;
  37. File F = new File(fromFileStr);
  38. if (!F.isFile())
  39. throw new Exception(F
  40. + " is not image file error in CreateThumbnail!");
  41. File ThF = new File(saveToFileStr, sysimgfile +"."+suffix);
  42. BufferedImage Bi = ImageIO.read(F);
  43. Image Itemp = Bi.getScaledInstance(width, height, Bi.SCALE_SMOOTH);
  44. if ((Bi.getHeight() > width) || (Bi.getWidth() > height)) {
  45. if (Bi.getHeight() > Bi.getWidth())
  46. Ratio = (double)width / Bi.getHeight();
  47. else
  48. Ratio = (double)height / Bi.getWidth();
  49. }
  50. AffineTransformOp op = new AffineTransformOp(AffineTransform
  51. .getScaleInstance(Ratio, Ratio), null);
  52. Itemp = op.filter(Bi, null);
  53. try {
  54. ImageIO.write((BufferedImage) Itemp, suffix, ThF);
  55. } catch (Exception ex) {
  56. throw new Exception(" ImageIo.write error in CreatThum.: "
  57. + ex.getMessage());
  58. }
  59. return (true);
  60. }
  61. public static void main(String[] args) {
  62. UploadImg UI;
  63. boolean ss = false;
  64. try {
  65. UI = new UploadImg("d://FairyTaleVector040.png", "d://temp", "ps_low1","png",650,650);
  66. ss = UI.createThumbnail();
  67. if (ss) {
  68. System.out.println("Success");
  69. } else {
  70. System.out.println("Error");
  71. }
  72. } catch (Exception e) {
  73. System.out.print(e.toString());
  74. }
  75. }
  76. }

这个类,可以对jpg、png、gif三种图片缩放,缩放按等比例缩放

  1. package manager.util;
  2. import java.awt.Graphics2D;
  3. import java.awt.RenderingHints;
  4. import java.awt.geom.AffineTransform;
  5. import java.awt.image.BufferedImage;
  6. import java.awt.image.ColorModel;
  7. import java.awt.image.WritableRaster;
  8. import java.io.File;
  9. import javax.imageio.ImageIO;
  10. public class Thumbnail {
  11. /**
  12. * 生成缩略图
  13. * fromFileStr:原图片路径
  14. * saveToFileStr:缩略图路径
  15. * width:缩略图的宽
  16. * height:缩略图的高
  17. */
  18. public static void saveImageAsJpg(String fromFileStr, String saveToFileStr,
  19. int width, int height,boolean equalProportion) throws Exception {
  20. BufferedImage srcImage;
  21. String imgType="JPEG";
  22. if(fromFileStr.toLowerCase().endsWith(".png")){
  23. imgType="PNG";
  24. }
  25. File fromFile=new File(fromFileStr);
  26. File saveFile=new File(saveToFileStr);
  27. srcImage=ImageIO.read(fromFile);
  28. if(width>0||height>0){
  29. srcImage=resize(srcImage,width,height,equalProportion);
  30. }
  31. ImageIO.write(srcImage,imgType,saveFile);
  32. }
  33.  
  34. /**
  35. * 将原图片的BufferedImage对象生成缩略图
  36. * source:原图片的BufferedImage对象
  37. * targetW:缩略图的宽
  38. * targetH:缩略图的高
  39. */
  40. public static BufferedImage resize(BufferedImage source,int targetW,int targetH,boolean equalProportion){
  41. int type=source.getType();
  42. BufferedImage target=null;
  43. double sx=(double)targetW/source.getWidth();
  44. double sy=(double)targetH/source.getHeight();
  45. //这里想实现在targetW,targetH范围内实现等比例的缩放
  46. //如果不需要等比例的缩放则下面的if else语句注释调即可
  47. if(equalProportion){
  48. if(sx>sy){
  49. sx=sy;
  50. targetW=(int)(sx*source.getWidth());
  51. }else{
  52. sy=sx;
  53. targetH=(int)(sx*source.getHeight());
  54. }
  55. }
  56. if(type==BufferedImage.TYPE_CUSTOM){
  57. ColorModel cm=source.getColorModel();
  58. WritableRaster raster=cm.createCompatibleWritableRaster(targetW,targetH);
  59. boolean alphaPremultiplied=cm.isAlphaPremultiplied();
  60. target=new BufferedImage(cm,raster,alphaPremultiplied,null);
  61. }else{
  62. target=new BufferedImage(targetW,targetH,type);
  63. Graphics2D g=target.createGraphics();
  64. g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
  65. g.drawRenderedImage(source,AffineTransform.getScaleInstance(sx,sy));
  66. g.dispose();
  67. }
  68. return target;
  69. }
  70.  
  71. public static void main(String[] args){
  72. try{
  73. Thumbnail.saveImageAsJpg("D://FairyTaleVector040.png", "D://temp//test.png", 480, 480,true);
  74. }catch(Exception e){
  75. e.printStackTrace();
  76. }
  77. }
  78. }

这个类只能对jpg图片缩放,但是提供了两种缩放方式:等比例和不等比例

 以上内容来自: http://blog.csdn.net/tianhandigeng1498/article/details/6053835

java,图片压缩,略缩图的更多相关文章

  1. java自动生成略缩图

    当你要做一个图库的项目时,对图片大小.像素的控制是首先需要解决的难题. 本篇文章,在前辈的经验基础上,分别对单图生成略缩图和批量生成略缩图做个小结. 一.单图生成略缩图 单图经过重新绘制,生成新的图片 ...

  2. php 制作略缩图

    一.需求 最近公司的项目中有个需求,就是用户上传自己的微信二维码,然后系统会自动将用户的微信二维码合并到产品中 二.分析 因为该系统是手机端的,所以从用户端的体验出发,用户当然是直接在微信上保存二维码 ...

  3. Bootstrap-CL:略缩图

    ylbtech-Bootstrap-CL:略缩图 1.返回顶部 1. Bootstrap 缩略图 本章将讲解 Bootstrap 缩略图.大多数站点都需要在网格中布局图像.视频.文本等.Bootstr ...

  4. Java图片压缩

    package com.test; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGIma ...

  5. java图片压缩(Thumbnails)

    package com.hzxc.groupactivity.server.util; import java.awt.image.BufferedImage; import java.io.*; i ...

  6. android 获取 图片或视频略缩图

    /** * 根据指定的图像路径和大小来获取缩略图 此方法有两点好处: 1. * 使用较小的内存空间,第一次获取的bitmap实际上为null,只是为了读取宽度和高度, * 第二次读取的bitmap是根 ...

  7. Java 图片压缩

    package com.wuyu.util; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.Buff ...

  8. 在windows和Linux上安装ImageMagick与jmagick,Maven配置、Java图片压缩代码(整理网上、结合自己情况、编写出来的新安装方式)

    安装过程(如图所示) .Exceptionin thread "main" java.lang.UnsatisfiedLinkError:C:\WINDOWS\system32\j ...

  9. java 图片压缩 剪切 水印 转换 黑白 缩放

    专注java已6年,欢迎加入java核心技术QQ群:135138817,每周五晚有群主进行技术讲座. import java.awt.AlphaComposite; import java.awt.C ...

随机推荐

  1. Android之画廊点击内容显示

    package com.example.Gallery; import com.example.Gallery.R; import android.os.Bundle; import android. ...

  2. PHP中大括号{}用法总结

    刚用到一个由字符串来设定对像属性名的功能.发现大括号的作用真强…. 1. 动态设置对象的属性名的使用:写法一(不能正确设置): $obj->$string[$key]; //这里只能使用$str ...

  3. 【Unity3D】Unity3D之 注册表动态存取游戏存档——PlayerPrefs类

    [Unity3D]Unity3D之 注册表动态存取游戏存档--PlayerPrefs类 1.Unity3D提供了一个用于本地持久化保存与读取的类--PlayerPrefs.工作原理非常简单,以键值对的 ...

  4. 7款值得你心动的HTML5动画和游戏

    1.HTML5 Canvas粒子效果文字动画特效 之前我们分享过很多超酷的文字特效,其中也有利用HTML5和CSS3的.今天我们要来分享一款基于HTML5 Canvas的文字特效,输入框中输入想要展示 ...

  5. 单机版简单弹幕墙demo (jqery+bootstrap)

    最近在看fcc  ,上面有一个弹幕墙设计的题目,要求从后端获取数据,显示出来.百度,谷歌都没找到相关好的例子作为借鉴,索性按照自己的思路写了一个简单的demo  .在做demo的过程中遇到最大的问题就 ...

  6. cass实体编码列表

    地物名称 编码 图层 类别 参数一 参数二 实体类型 三角点 131100 KZD 20 gc113 3 SPECIAL,1 三角点分数线 131110 KZD 附 LINE 三角点高程注记 1311 ...

  7. ie8中使用placeholder

    placeholder 是 html5 中的新属性,考虑到还有不少 ie8 的用户,所以找了一个 ie8 的 placeholder 的补丁,如下: <script type="tex ...

  8. CentOS 7.2 无法生成 coredump文件

    CentOS版本 cat /etc/centos-release  CentOS Linux release 7.2.1511 (Core) 设置ulimit -c ulimited 依旧无法生成co ...

  9. 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法

    $x_pi = 3.14159265358979324 * 3000.0 / 180.0; //火星坐标系 (GCJ-02)转百度坐标系 (BD-09)算法 function bd_encrypt($ ...

  10. ROS ZYNQ移植

    1  准备工作 全部是按照官方操作的:http://wiki.ros.org/groovy/Installation/Source   apt-get install python-rosdep py ...