使用第三方工具(thumbnailator非java自带API)处理图片大小,尺寸, 添加水印

thumbnailator-0.4.8目前是最新的jar

code:

package yingyue;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Positions;

public class HandlerImg {

    private static String fromPic = "from/1600x1200-Asia EMEA.jpg";
    private static String toPic = "to/";
    public static void main(String[] args){
        try {
            /* 按指定大小把图片进行缩放(会遵循原图高宽比例)*/
            Thumbnails.of(fromPic).
                size(100, 200).
                toFile(toPic + "/new1.jpg");//变为400*300,遵循原图比例缩或放到400*某个高度

            /* 按照指定比例进行缩小和放大 */
            Thumbnails.of(fromPic).
                scale(0.2f).
                toFile(toPic + "/new2_small.jpg");//按比例缩小
            Thumbnails.of(fromPic).
                scale(2f).
                toFile(toPic + "/new2_large.jpg");//按比例放大

            /* 图片尺寸不变,压缩图片文件大小 */
            Thumbnails.of(fromPic).
                scale(1f).
                outputQuality(0.25f).
                toFile(toPic + "/new3.jpg");// 图片尺寸不变,压缩图片文件大小outputQuality实现,参数1为最高质量

            /* 图片旋转 rotate(角度),正数:顺时针负数:逆时针 */
            Thumbnails.of(fromPic)
            .size(1280,1024)
            .rotate(90)
            .toFile(toPic + "/new4.jpg");

            /* 水印 watermark(位置,水印图,透明度) */
            Thumbnails.of(fromPic)
                .size(1280,1024)
                .watermark(Positions.BOTTOM_RIGHT,ImageIO.read(new File("from/ss.png")),0.8f)
                .outputQuality(0.8f)
                .toFile(toPic + "/new5-1.jpg");

            Thumbnails.of(fromPic)
                .size(1280,1024)
                .watermark(Positions.CENTER,ImageIO.read(new File("from/ss.png")),0.5f)
                .outputQuality(0.8f)
                .toFile(toPic + "/new5-2.jpg");

            Thumbnails.of(fromPic)
                .size(1280,1024)
                .watermark(Positions.TOP_LEFT,ImageIO.read(new File("from/ss.png")),0.9f)
                .outputQuality(0.8f)
                .toFile(toPic + "/new5-3.jpg");

            /* 裁剪 */
            Thumbnails.of(fromPic)
                .sourceRegion(Positions.CENTER,400,400)
                .size(200,200)
                .keepAspectRatio(false)
                .toFile(toPic + "/new6-1.jpg");

            //图片右下400*400的区域
            Thumbnails.of(fromPic)
                .sourceRegion(Positions.BOTTOM_RIGHT,400,400)
                .size(200,200)
                .keepAspectRatio(false)
                .toFile(toPic + "/new6-2.jpg");

            //指定坐标
            Thumbnails.of(fromPic)
                .sourceRegion(600,500,400,400)
                .size(200,200)
                .keepAspectRatio(false)
                .toFile(toPic + "/new6-3.jpg");

            /* 转化图像格式 */
            Thumbnails.of(fromPic)
                .size(1280,1024)
                .outputFormat("png")
                .toFile(toPic + "/new7-1");

            Thumbnails.of(fromPic)
                .size(1280,1024)
                .outputFormat("gif")
                .toFile(toPic + "/new7-2");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

package yingyue;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.imageio.ImageIO;

import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Positions;

public class TestImg {

private static String fromPic = "from/1600x1200-Asia EMEA.jpg";
    private static String toPic = "to/";
    public static void main(String[] args){
        try {
            /* 按指定大小把图片进行缩放(会遵循原图高宽比例)*/
            Thumbnails.of(fromPic).
                size(100, 200).
                toFile(toPic + "/new1.jpg");//变为400*300,遵循原图比例缩或放到400*某个高度
            
            /* 按照指定比例进行缩小和放大 */
            Thumbnails.of(fromPic).
                scale(0.2f).
                toFile(toPic + "/new2_small.jpg");//按比例缩小
            Thumbnails.of(fromPic).
                scale(2f).
                toFile(toPic + "/new2_large.jpg");//按比例放大
            
            /* 图片尺寸不变,压缩图片文件大小 */
            Thumbnails.of(fromPic).
                scale(1f).
                outputQuality(0.25f).
                toFile(toPic + "/new3.jpg");// 图片尺寸不变,压缩图片文件大小outputQuality实现,参数1为最高质量
            
            /* 图片旋转 rotate(角度),正数:顺时针负数:逆时针 */
            Thumbnails.of(fromPic)  
            .size(1280,1024)  
            .rotate(90)  
            .toFile(toPic + "/new4.jpg");
            
            /* 水印 watermark(位置,水印图,透明度) */
            Thumbnails.of(fromPic)
                .size(1280,1024)
                .watermark(Positions.BOTTOM_RIGHT,ImageIO.read(new File("from/ss.png")),0.8f)
                .outputQuality(0.8f)
                .toFile(toPic + "/new5-1.jpg");
              
            Thumbnails.of(fromPic)
                .size(1280,1024)
                .watermark(Positions.CENTER,ImageIO.read(new File("from/ss.png")),0.5f)
                .outputQuality(0.8f)
                .toFile(toPic + "/new5-2.jpg");
            
            Thumbnails.of(fromPic)
                .size(1280,1024)
                .watermark(Positions.TOP_LEFT,ImageIO.read(new File("from/ss.png")),0.9f)
                .outputQuality(0.8f)
                .toFile(toPic + "/new5-3.jpg");
            
            /* 裁剪 */
            Thumbnails.of(fromPic)  
                .sourceRegion(Positions.CENTER,400,400)
                .size(200,200)
                .keepAspectRatio(false)
                .toFile(toPic + "/new6-1.jpg");
              
            //图片右下400*400的区域
            Thumbnails.of(fromPic)
                .sourceRegion(Positions.BOTTOM_RIGHT,400,400)
                .size(200,200)
                .keepAspectRatio(false)
                .toFile(toPic + "/new6-2.jpg");
              
            //指定坐标
            Thumbnails.of(fromPic)
                .sourceRegion(600,500,400,400)
                .size(200,200)
                .keepAspectRatio(false)
                .toFile(toPic + "/new6-3.jpg");

/* 转化图像格式 */
            Thumbnails.of(fromPic)
                .size(1280,1024)
                .outputFormat("png")
                .toFile(toPic + "/new7-1");
          
            Thumbnails.of(fromPic)
                .size(1280,1024)
                .outputFormat("gif")
                .toFile(toPic + "/new7-2");
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

时间: 2024-10-05 05:50:12

使用第三方工具(thumbnailator非java自带API)处理图片大小,尺寸, 添加水印的相关文章

Spark的Straggler深入学习(1):如何在本地图形监控远程Spark的GC情况——使用java自带的jvisualvm

一.本文的目的 Straggler是目前研究的热点,Spark中也存在Straggler的问题.GC问题是总所周知的导致Straggler的重要因素之一,为了了解GC导致的Straggler问题,首先需要学习GC问题以及如何监控Spark的GC.GC问题的讨论比较多了,推荐一篇系列文章用于学习:成为Java的GC专家. 二.本文所需工具 本文所需工具很简单,基本不用下载.监控GC的前提是: 1.已经在集群上安装了Spark并可以正常提交作业: 2.本地装有jdk1.6以上版本. 本文实际使用的工

Java自带优秀工具2

Jconsole 是原生java自带的系统monitor工具,可以连接本地也可以连接远端的java process,连接java process之后可以查看应用的CPU,内存,线程数,GC情况,可以帮忙查看系统是否有死锁的现象,还可以查看MBean export出来的系统接口和数据.不过我现在比较少用它了,因为有了jvisualvm. jvisualvm jvisualvm原本是要钱的工具,自从1.6整到jdk里面之后,幸福了我.有了jvisualvm,在图形界面条件允许的情况下,对系统性能调优

Java自带优秀工具

Java自己有很多优秀的调试工具,可以帮助分析系统的漏洞,瓶颈,这里列举几个自己常用的命令: jps -l 查看现有的java进程 jps -l 显示所有正在运行的java进程id jstack  查看Java线程 jstack -l pid; 做thread dump,直接打印在串口 jstack pid>> ./threaddumps  输出到指定文件分析 jmap 查看Java内存使用情况 jmap -histo:live pid 对象占用内存排名 jmap -dump:file=mem

Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm

JDK内置工具使用 一.javah命令(C Header and Stub File Generator) 二.jps命令(Java Virtual Machine Process Status Tool) 三.jstack命令(Java Stack Trace) 四.jstat命令(Java Virtual Machine Statistics Monitoring Tool) 五.jmap命令(Java Memory Map) 六.jinfo命令(Java Configuration Inf

java自带工具-jps、jinfo、jstack、jstat、jmap

掌握java自带的这些监控工具,有助与我们很好的分析问题和jvm性能调优秀.收集了些网上整理很好的文章. Java监控工具.调优.调试辅助函数 Java自带的GUI性能监控工具Jconsole以及JisualVM简介 JDK自带监控工具

mysql8绿色免安装win64版本(自带heidisql.exe客户端)应该兼容老版第三方工具。

https://pan.baidu.com/s/1cvQ4AJX6rmqSpMhBQTPz4Q 如果缺c库,自己去找下. 使用方法:先执行initdb.bat初始化数据 如果要安装为服务:执行inst_and_start_64.bat 如果要命令行执行:直接 执行run_console64.bat 这个版本按理应该兼容老的客户端和第三方工具. 原文地址:https://www.cnblogs.com/sevencatwang/p/9009234.html

Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法

方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下: Manifest-Version: 1.0 Class-Path: lib/commons-codec.jar lib/commons-httpclient-3.1.jar lib/commons-logging-1.1.jar lib/log4j-1.

js之第三方工具解析JSON

1.JSON 仅仅是一种文本字符串.它被存储在 responseText 属性中 为了读取存储在 responseText 属性中的 JSON 数据,须要依据 JavaScript 的 eval 函数.函数 eval 会把一个字符串当作它的參数. 然后这个字符串会被当作 JavaScript 代码来运行.由于 JSON 的字符串就是由 JavaScript 代码构成的,所以它本身是可运行的 比如例如以下方式: String json = "{username:'一叶扁舟',age:22}&quo

将引用了第三方jar包的Java项目打包成jar文件的两种方法

方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下: Manifest-Version: 1.0 Class-Path: lib/commons-codec.jar lib/commons-httpclient-3.1.jar lib/commons-logging-1.1.jar lib/log4j-1.