• 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")); 
     
     
     
     
     
  • 相关阅读:
    51nod 最长公共子序列Lcs
    输入挂
    HDU 圆桌会议
    畅通工程
    异形卵
    Python中的多态如何理解?(转帖,让我很理解。)【外加自我看法】(这次修改后应该就是标准答案了)
    Python短路逻辑or的巧妙使用。
    Python三元表达式
    稍微记号下Python的赋值技巧。
    刚看到一个字符串的替换命令,makeslate,记号一下(用处大?应该不算)!
  • 原文地址:https://www.cnblogs.com/yangzhilong/p/2880186.html
Copyright © 2020-2023  润新知