关键字:java image  thumbnail  google

粗略demo:

  1. import java.awt.Graphics2D;
  2. import java.awt.GraphicsConfiguration;
  3. import java.awt.GraphicsDevice;
  4. import java.awt.GraphicsEnvironment;
  5. import java.awt.geom.AffineTransform;
  6. import java.awt.image.BufferedImage;
  7. import java.io.File;
  8. import java.io.IOException;
  9.  
  10. import javax.imageio.ImageIO;
  11.  
  12. import org.junit.Test;
  13.  
  14. public class ImageUtils {
  15.  
  16. @Test
  17. public void test1() throws IOException {
  18. File file = new File("E:\\1.png");
  19.  
  20. ImageUtils.scale(file, 0.1, new File("E:\\2.jpg"));
  21. ImageUtils.thumbnail(file, 100, new File("E:\\3.jpg"));
  22. }
  23.  
  24. /**
  25. * 按比例缩放
  26. *
  27. * @param rawImage
  28. * @param ratio
  29. * @param saltImage
  30. *
  31. * @throws IOException
  32. * */
  33. public static void scale(File rawImage, double ratio, File saltImage) throws IOException {
  34. BufferedImage rawBufferedImage = ImageIO.read(rawImage);
  35. int width = (int) (rawBufferedImage.getWidth() * ratio);
  36. int height = (int) (rawBufferedImage.getHeight() * ratio);
  37. BufferedImage bi = getCompatibleImage(width, height);
  38. Graphics2D g2d = bi.createGraphics();
  39. double xScale = (double) width / rawBufferedImage.getWidth();
  40. double yScale = (double) height / rawBufferedImage.getHeight();
  41. AffineTransform at = AffineTransform.getScaleInstance(xScale, yScale);
  42. g2d.drawRenderedImage(rawBufferedImage, at);
  43. g2d.dispose();
  44. ImageIO.write(bi, "jpg", saltImage);
  45. }
  46.  
  47. /**
  48. * 按比例缩放至【最大边 = 指定pix】
  49. *
  50. * @param rawImage
  51. * @param pixel
  52. * @param saltImage
  53. *
  54. * @throws IOException
  55. * */
  56. public static void thumbnail(File rawImage, int pixel, File saltImage) throws IOException {
  57. BufferedImage source = ImageIO.read(rawImage);
  58. int width = source.getWidth();
  59. int height = source.getHeight();
  60.  
  61. int l = width > height ? width : height;
  62.  
  63. double ratio = (pixel * 1.0) / l;
  64.  
  65. int w = (int) (width * ratio);
  66. int h = (int) (height * ratio);
  67.  
  68. BufferedImage bi = getCompatibleImage(w, h);
  69. Graphics2D g2d = bi.createGraphics();
  70. double xScale = (double) w / width;
  71. double yScale = (double) h / height;
  72. AffineTransform at = AffineTransform.getScaleInstance(xScale, yScale);
  73. g2d.drawRenderedImage(source, at);
  74. g2d.dispose();
  75. ImageIO.write(bi, "jpg", saltImage);
  76. }
  77.  
  78. private static BufferedImage getCompatibleImage(int w, int h) {
  79. GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
  80. GraphicsDevice gd = ge.getDefaultScreenDevice();
  81. GraphicsConfiguration gc = gd.getDefaultConfiguration();
  82. BufferedImage image = gc.createCompatibleImage(w, h);
  83. return image;
  84. }
  85.  
  86. }

java.awt.Graphics2D 图片缩放的更多相关文章

  1. Java基础 awt Graphics2D 生成矩形图片并向内写入字符串

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  2. Java基础 awt Graphics2D 生成矩形图片并向其中画一条直线

        JDK :OpenJDK-11      OS :CentOS 7.6.1810      IDE :Eclipse 2019‑03 typesetting :Markdown   code ...

  3. java图片缩放

    package com.rubekid.springmvc.utils; import java.awt.AlphaComposite; import java.awt.Graphics2D; imp ...

  4. java中 awt Graphics2D

    Graphics2D ,Graphics 类,提供了对几何形状.坐标转换.颜色管理和文本布局更为复杂的控制.它是用于在 Java(tm) 平台上呈现二维形状.文本和图像的基础类.验证码生成可以用到此类 ...

  5. Java实现打印功能-AWT Graphics2D

    Java实现打印功能 用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Gra ...

  6. openseadragon.js与deep zoom java实现艺术品图片展示

    openseadragon.js 是一款用来做图像缩放的插件,它可以用来做图片展示,做展示的插件很多,也很优秀,但大多数都解决不了图片尺寸过大的问题. 艺术品图像展示就是最简单的例子,展示此类图片一般 ...

  7. java.imageIo给图片添加水印

    最近项目在做一个商城项目, 项目上的图片要添加水印①,添加图片水印;②:添加文字水印; 一下提供下个方法,希望大家可以用得着: package com.blogs.image; import java ...

  8. 不涉及框架纯java实现将图片裁成圆形

    package com.wtsrui.utils;import java.awt.Color;  import sun.misc.BASE64Encoder;import java.awt.Graph ...

  9. java实现给图片添加水印

    package michael.io.image; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.aw ...

随机推荐

  1. Hibernate 一对一、一对多、多对多注解cascade属性的总结

    作用:是否级联被注解字段里面的对象.可选值:javax.persistence.CascadeType.PERSIST, MERGE, REMOVE, REFRESH, DETACH, ALL.可选其 ...

  2. 简单IOCP例子

    使用IOCP模型编程的优点 ① 帮助维持重复使用的内存池.(与重叠I/O技术有关) ② 去除删除线程创建/终结负担. ③ 利于管理,分配线程,控制并发,最小化的线程上下文切换. ④ 优化线程调度,提高 ...

  3. 【UVa】439 Knight Moves(dfs)

    题目 题目     分析 没有估价函数的IDA......     代码 #include <cstdio> #include <cstring> #include <a ...

  4. MVC、MVP、MVVM架构模式

    MVC模式 如何设计一个程序的结构,这是一门专门的学问,叫做"架构模式"(architectural pattern),属于编程的方法论. MVC模式就是架构模式的一种,不仅适用于 ...

  5. Android 4 学习(18):搜索

    参考<Professional Android 4 Development> 搜索 通过下面这几种方式可以给应用程序添加搜索功能: Search Bar Search View Quick ...

  6. Service通信的两篇博文

    普通Service http://blog.csdn.net/liuhe688/article/details/6874378 AIDL通信 http://blog.csdn.net/liuhe688 ...

  7. vertex shader(1)

    Vertex shader Architecture: 所有在vertex shader中的数据都用128-bit的quad-floats表示(4x32-bit). vertex shader线性地执 ...

  8. SQLSERVER2012误删数据恢复过程

    由于长时间从事企业应用系统开发,前往用户现场升级.调试系统是比较常做的事情,但是就在周一,由于同事的失误在毫无知觉的情况下误删了生产数据库几乎所有的数据.当我发现的那一刻,感觉头发都立起来了,心想这他 ...

  9. Python基础:文件的基本操作

    # 打开文件(如果不存在则新建) 向其中写入 f = open('D:\\test.txt', 'w') f.write('hello world, i am here!') f.close() pr ...

  10. 191. Number of 1 Bits 二进制中1的个数

    [抄题]: Write a function that takes an unsigned integer and returns the number of ’1' bits it has (als ...