• Java生成缩略图之Thumbnailator


    项目地址:http://code.google.com/p/thumbnailator/ 
     
     
    Thumbnailator 是一个为Java界面更流畅的缩略图生成库。从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持了需要写入到最低限度的代码量。同时还支持根据一个目录批量生成缩略图。 
    版本:thumbnailator-0.4.2.jar
     
     
    1、指定大小进行缩放 
    //size(宽度, 高度)
    
    /*  
     * 若图片横比200小,高比300小,不变  
     * 若图片横比200小,高比300大,高缩小到300,图片比例不变  
     * 若图片横比200大,高比300小,横缩小到200,图片比例不变  
     * 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300  
     */ 
    Thumbnails.of("images/a380_1280x1024.jpg") 
            .size(200, 300)
            .toFile("c:/a380_200x300.jpg");
    
    Thumbnails.of("images/a380_1280x1024.jpg") 
            .size(2560, 2048) 
            .toFile("c:/a380_2560x2048.jpg");

    2、按照比例进行缩放 

    //scale(比例)
    Thumbnails.of("images/a380_1280x1024.jpg") 
            .scale(0.25f)
            .toFile("c:/a380_25%.jpg");
    
    Thumbnails.of("images/a380_1280x1024.jpg") 
            .scale(1.10f)
            .toFile("c:/a380_110%.jpg");

    3、不按照比例,指定大小进行缩放

    //keepAspectRatio(false) 默认是按照比例缩放的
    Thumbnails.of("images/a380_1280x1024.jpg") 
            .size(200, 200) 
            .keepAspectRatio(false) 
            .toFile("c:/a380_200x200.jpg");

    4、旋转 

    //rotate(角度),正数:顺时针 负数:逆时针
    Thumbnails.of("images/a380_1280x1024.jpg") 
            .size(1280, 1024)
            .rotate(90) 
            .toFile("c:/a380_rotate+90.jpg"); 
    
    Thumbnails.of("images/a380_1280x1024.jpg") 
            .size(1280, 1024)
            .rotate(-90) 
            .toFile("c:/a380_rotate-90.jpg"); 

    5、水印 

    //watermark(位置,水印图,透明度)
    Thumbnails.of("images/a380_1280x1024.jpg") 
            .size(1280, 1024)
            .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("images/watermark.png")), 0.5f) 
            .outputQuality(0.8f) 
            .toFile("c:/a380_watermark_bottom_right.jpg");
    
    Thumbnails.of("images/a380_1280x1024.jpg") 
            .size(1280, 1024)
            .watermark(Positions.CENTER, ImageIO.read(new File("images/watermark.png")), 0.5f) 
            .outputQuality(0.8f) 
            .toFile("c:/a380_watermark_center.jpg");

    6、裁剪 

    //sourceRegion()
    
    //图片中心400*400的区域
    Thumbnails.of("images/a380_1280x1024.jpg")
            .sourceRegion(Positions.CENTER, 400,400)
            .size(200, 200)
            .keepAspectRatio(false) 
            .toFile("c:/a380_region_center.jpg");
    
    //图片右下400*400的区域
    Thumbnails.of("images/a380_1280x1024.jpg")
            .sourceRegion(Positions.BOTTOM_RIGHT, 400,400)
            .size(200, 200)
            .keepAspectRatio(false) 
            .toFile("c:/a380_region_bootom_right.jpg");
    
    //指定坐标
    Thumbnails.of("images/a380_1280x1024.jpg")
            .sourceRegion(600, 500, 400, 400)
            .size(200, 200)
            .keepAspectRatio(false) 
            .toFile("c:/a380_region_coord.jpg");

    7、转化图像格式

    //outputFormat(图像格式)
    Thumbnails.of("images/a380_1280x1024.jpg") 
            .size(1280, 1024)
            .outputFormat("png") 
            .toFile("c:/a380_1280x1024.png"); 
    
    Thumbnails.of("images/a380_1280x1024.jpg") 
            .size(1280, 1024)
            .outputFormat("gif") 
            .toFile("c:/a380_1280x1024.gif"); 

    8、输出到OutputStream

    //toOutputStream(流对象)
    OutputStream os = new FileOutputStream("c:/a380_1280x1024_OutputStream.png");
    Thumbnails.of("images/a380_1280x1024.jpg") 
            .size(1280, 1024)
            .toOutputStream(os);

    9、输出到BufferedImage 

    //asBufferedImage() 返回BufferedImage
    BufferedImage thumbnail = Thumbnails.of("images/a380_1280x1024.jpg") 
            .size(1280, 1024)
            .asBufferedImage();
    ImageIO.write(thumbnail, "jpg", new File("c:/a380_1280x1024_BufferedImage.jpg")); 
     
     
     
     
     
  • 相关阅读:
    PHP工程师学Python数据类型
    通过PHP与Python代码对比浅析语法差异
    “adobe premiere中画面和声音不同步” 解决方法
    Web安全之XSS Platform搭建及使用实践
    使用docker快速搭建Permeate渗透测试系统实践
    Web安全开发规范手册V1.0
    遭受刷验证码攻击后的企安建设规划感想
    基于Docker搭建Jumpserver堡垒机操作实践
    使用PHP结合Ffmpeg快速搭建流媒体服务实践
    通过代码审计找出网站中的XSS漏洞实战(三)
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/2880186.html
Copyright © 2020-2023  润新知