2019独角兽企业重金招聘Python工程师标准>>>

package com.wxp.test;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;

import javax.imageio.ImageIO;

import sun.awt.image.PNGImageDecoder;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import com.sun.imageio.plugins.png.PNGImageWriter;

public class CreateShortImage {

public final static  String DDIST="D:\\WXPworkspace\\shortImage\\";
    public final static  String DSRC="D:\\WXPworkspace\\";
    
    /**
     * 创建图片缩略图(等比缩放)
     * @param src
     * @param dist
     * @param width
     * @param height
     */
    public static 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 bfiImage = new BufferedImage(newWidth, newHeight,BufferedImage.TYPE_INT_BGR);
            bfiImage.getGraphics().drawImage(
                    image.getScaledInstance(newWidth, newHeight,Image.SCALE_SMOOTH),0,0,null);
            FileOutputStream os = new FileOutputStream(dist);
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
            encoder.encode(bfiImage);
            os.close();
            System.out.println("创建缩略图成功");
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("创建缩略图发生异常"+e.getMessage());
        }
    }
    /**
     * @param argsshortImage
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
          createThumbnail(DSRC+"1.png", DDIST+"a.png", 100, 100);
          createThumbnail(DSRC+"2.png", DDIST+"b.png", 100, 100);
          createThumbnail(DSRC+"3.jpg", DDIST+"c.jpg", 100, 100);
    }

}

转载于:https://my.oschina.net/u/3378039/blog/1860208

java按比例之原图生成缩略图相关推荐

  1. Java苹果手机缩略图旋转_【Java实例】使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)...

    正版现货ruby on rails教程水手册 87.9元 包邮 (需用券) 去购买 > 1 需求 表哥需要给儿子报名考试,系统要求上传不超过30KB的图片,而现在的手机随手一拍就是几MB的,怎么 ...

  2. java 文字水印 旋转_【Java实例】使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)...

    1 需求 表哥需要给儿子报名考试,系统要求上传不超过30KB的图片,而现在的手机随手一拍就是几MB的,怎么弄一个才30KB的图片呢? 一个简单的办法是在电脑上把图片缩小,然后截屏小图片,但现在的电脑屏 ...

  3. 【Nginx】面试官竟然问我Nginx如何生成缩略图,还好我看了这篇文章!!

    写在前面 今天想写一篇使用Nginx如何生成缩略图的文章,想了半天题目也没想好,这个题目还是一名读者帮我起的.起因就是这位读者最近出去面试,面试官正好问了一个Nginx如何生成缩略图的问题.还别说,就 ...

  4. java 生成缩略图_Java实现等比例缩略图

    1.简介:Web应用为上传图片生成缩略图是常见的基本功能,通过缩略图生成提高了信息浏览时的性能,在保证用户使用体验的同时减少了数据传输量. 2.实现图片等比例缩略图生成,方式及相关工具介绍: (1)T ...

  5. java生成缩略图,接收图片,按指定宽高或按比例生成缩略图

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java生成缩略图,接收图片,按指定宽高或按比例生成缩略图,能有效降低前端访问图片的流量负载. 支持的图片类型 : [BMP, bmp, jpg, ...

  6. java 程序实现对图片的压缩生成缩略图并可设定长宽、尺寸压缩率、图片质量

    转载自  java 程序实现对图片的压缩生成缩略图并可设定长宽.尺寸压缩率.图片质量 之前是在另一位高手的上传内容中学习到的,并将其代码根据我的需求进行了修改,参考位置:http://jiangpin ...

  7. php 生成等比例缩略图,PHP实现原比例生成缩略图的方法

    PHP实现原比例生成缩略图的方法 发布于 2016-02-17 05:18:30 | 107 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pr ...

  8. java图片裁剪和java生成缩略图

    一.缩略图 在浏览相册的时候,可能需要生成相应的缩略图. 直接上代码: public class ImageUtil {private Logger log = LoggerFactory.getLo ...

  9. java将图片转成缩略图,将图片生成缩略图Java代码实现

    在工作中经常会遇到图片处理相关的需求,比如说一些图片网站只展示相关的缩略图,而真实的图片可能很大而不是直接展示.所以就需要在上传相关的图片后直接对图片进行处理生成相关的缩略图.实现代码如下: impo ...

最新文章

  1. 在Ubuntu 14.04 64bit下用Python搭建数据科学研究环境
  2. Linux中环境变量与文件查找
  3. 关于int main( int argc, char* argv[] ) 中arg和argv参数理解
  4. shell中cut-b_Shell中cut用法
  5. java Object解析
  6. pytorch之with torch.no_grad
  7. 一个很Low的通讯录管理系统(但是能用)C/C++单链表实现
  8. db2数据库还原找不到文件_db2数据库还原
  9. 天文学家用AI探测宇宙:借助图像识别探索银河系中的红巨星
  10. python复制文件shutil_Python常用模块——文件复制模块shutil
  11. python通用编码_python2.7的编码的常见解决方案.md
  12. 社交网络模型及属性介绍
  13. Gradle下载及安装
  14. 单片机炫彩灯实训报告_基于51单片机的流水灯实训报告.doc
  15. IR2104/03 TLP250
  16. java 不支持,不支持Java Sound格式
  17. html tbody边框,tbody边框呈现问题
  18. 华为云--欧拉操作系统
  19. Servlet入门到入坟 一站式基础及进阶——SpringMVC没它都不行 你确定不来看看——囊括初学基础以及进阶
  20. Cisco WLC 基础配置

热门文章

  1. linux进程调度之 FIFO 和 RR 调度策略
  2. phpstorm IDE编辑器使用手记
  3. 函数体中定义的结构体和类型
  4. Windows Azure Marketplaces上的Bing Search API可用啦!
  5. 严重: StandardServer.await: create[localhost:8005]
  6. 最大子列和问题(JAVA)
  7. android 本地资源 uri,Android 本地文件选择
  8. linux系统终端more,一篇文章让你学透Linux系统中的more命令
  9. quartz java spring_从零开始学 Java - Spring 使用 Quartz 任务调度定时器
  10. winform数据传递到html,C#下winform和JS的互相调用和传参(webbrowser)