ThumbnailatorDemo 图片处理

来源:互联网 发布:手机图像对比软件 编辑:程序博客网 时间:2024/06/06 03:51
package com.zfounder.platform.core.service;import net.coobird.thumbnailator.Thumbnails;import net.coobird.thumbnailator.geometry.Positions;import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;/** * Created by mu.jie on 2017/4/27. */public class ThumbnailatorDemo {    public static void main(String[] args) {        try {            updateImgType();            compressImgSizeFixed();            compressImg1();            compressImg2();            cutImg();            rotators();            watermark1();            watermark2();        } catch (IOException e) {            e.printStackTrace();        }    }    /**     * 图片尺寸不变,修改图片文件类型     * outputFormat:输出的图片格式。注意使用该方法后toFile()方法不要再含有文件类型的后缀了,否则会生成 E:\迅雷下载\IMG_mj_111111.png.png 的图片。     * Created by mu.jie on 2017/4/27     */    private static void updateImgType() throws IOException {        Thumbnails.of("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg")                .scale(1f)                .outputFormat("png")                .toFile("E:\\迅雷下载\\IMG_mj_111111");    }    /**     * 图片尺寸不变,压缩图片文件大小     * outputQuality:输出的图片质量,范围:0.0~1.0     * 1为最高质量。注意使用该方法时输出的图片格式必须为jpg(即outputFormat("jpg")。     * 其他格式我没试过,感兴趣的自己可以试试)。否则若是输出png格式图片,则该方法作用无效【这其实应该算是bug】。     * Created by mu.jie on 2017/4/27     */    private static void compressImgSizeFixed() throws IOException {        Thumbnails.of("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg")                .scale(1F)                .outputQuality(0.25F)                .outputFormat("jpg")                .toFile("E:\\迅雷下载\\IMG_mj_222222");    }    /**     * 压缩至指定图片尺寸(例如:横400高300),不保持图片比例     * 

* Created by mu.jie on 2017/4/27 */ private static void compressImg1() throws IOException { Thumbnails.of("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg") .forceSize(400, 300) .toFile("E:\\迅雷下载\\IMG_mj_333333333.jpg"); } /** * 压缩至指定图片尺寸(例如:横400高300),保持图片比例 * 若图片横比200小,高比300小,不变 * 若图片横比200小,高比300大,高缩小到300,图片比例不变 * 若图片横比200大,高比300小,横缩小到200,图片比例不变 * 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300 */ private static void compressImg2() throws IOException { Thumbnails.of("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg") .size(200, 300) .toFile("E:\\迅雷下载\\IMG_mj_555555555.jpg"); } /** * 压缩至指定图片尺寸(例如:横400高300),保持图片不变形,多余部分裁剪掉 *

* Created by mu.jie on 2017/4/27 */ private static void cutImg() throws IOException { String imagePath = "E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg"; BufferedImage image = ImageIO.read(new File(imagePath)); Thumbnails.Builder builder = null; int imageWidth = image.getWidth(); int imageHeight = image.getHeight(); if ((float) 300 / 400 != (float) imageWidth / imageHeight) { if (imageWidth > imageHeight) { image = Thumbnails.of(imagePath).height(300).asBufferedImage(); } else { image = Thumbnails.of(imagePath).width(400).asBufferedImage(); } builder = Thumbnails.of(image).sourceRegion(Positions.CENTER, 400, 300).size(400, 300); } else { builder = Thumbnails.of(image).size(400, 300); } builder.outputFormat("jpg").toFile("E:\\迅雷下载\\IMG_mj_444444"); } /** * 图片旋转 * rotate(角度),正数:顺时针 负数:逆时针 * 注意:旋转过后不是图片的空白地方变成黑色 * Created by mu.jie on 2017/4/27 */ private static void rotators() throws IOException { Thumbnails.of("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg") .size(400, 300) .rotate(90) .toFile("E:\\迅雷下载\\IMG_mj_66666666.jpg"); Thumbnails.of("E:\\迅雷下载\\4c1c8e5bfd6663f788acb9a9665f3ffc.jpg") .size(400, 300) .rotate(-45) .toFile("E:\\迅雷下载\\IMG_mj_7777777777.jpg"); } /** * 水印图片 * Created by mu.jie on 2017/4/27 */ private static void watermark1() throws IOException { //watermark(位置,水印图,透明度) Thumbnails.of("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg") .size(1280, 1024) .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("E:\\迅雷下载\\4c1c8e5bfd6663f788acb9a9665f3ffc.jpg")), 0.5f) .outputQuality(0.8f) .toFile("E:\\迅雷下载\\88888888.jpg"); Thumbnails.of("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg") .size(1280, 1024) .watermark(Positions.CENTER, ImageIO.read(new File("E:\\迅雷下载\\4c1c8e5bfd6663f788acb9a9665f3ffc.jpg")), 0.5f) .outputQuality(0.8f) .toFile("E:\\迅雷下载\\IMG_9999999.jpg"); } /** * 文字水印,将文字生成图片,然后水印上去 * Created by mu.jie on 2017/4/27 */ private static void watermark2() throws IOException { BufferedImage bi = new BufferedImage(64, 64, BufferedImage.TYPE_INT_RGB); Graphics2D g = bi.createGraphics(); g.setColor(Color.GREEN); g.setBackground(new Color(1.0F, 0.75F, 0.0F, 0.45F)); g.drawRect(0, 0, 64, 64); char[] data = "mujie.com".toCharArray(); g.drawChars(data, 0, data.length, 5, 32); Thumbnails.of(new File("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg")) .scale(0.5f) .watermark(Positions.CENTER, bi, 0.9f) .toFile(new File("E:\\迅雷下载\\IMG_45455555555.jpg")); } /** * 另外提醒大家一点,若png、gif格式图片中含有透明背景,使用该工具压缩处理后背景会变成黑色,这是Thumbnailator的一个bug,预计后期版本会解决。 */}

package com.zfounder.platform.core.service;import net.coobird.thumbnailator.Thumbnails;import net.coobird.thumbnailator.geometry.Positions;import javax.imageio.ImageIO;import java.awt.*;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;public class ThumbnailatorDemo { public static void main(String[] args) { try { updateImgType(); compressImgSizeFixed(); compressImg1(); compressImg2(); cutImg(); rotators(); watermark1(); watermark2(); } catch (IOException e) { e.printStackTrace(); } } /** * 图片尺寸不变,修改图片文件类型 * outputFormat:输出的图片格式。注意使用该方法后toFile()方法不要再含有文件类型的后缀了,否则会生成 E:\迅雷下载\IMG_mj_111111.png.png 的图片。 */ private static void updateImgType() throws IOException { Thumbnails.of("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg") .scale(1f) .outputFormat("png") .toFile("E:\\迅雷下载\\IMG_mj_111111"); } /** * 图片尺寸不变,压缩图片文件大小 * outputQuality:输出的图片质量,范围:0.0~1.0 * 1为最高质量。注意使用该方法时输出的图片格式必须为jpg(即outputFormat("jpg")。 * 其他格式我没试过,感兴趣的自己可以试试)。否则若是输出png格式图片,则该方法作用无效【这其实应该算是bug】。 */ private static void compressImgSizeFixed() throws IOException { Thumbnails.of("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg") .scale(1F) .outputQuality(0.25F) .outputFormat("jpg") .toFile("E:\\迅雷下载\\IMG_mj_222222"); } /** * 压缩至指定图片尺寸(例如:横400高300),不保持图片比例 * <p> */ private static void compressImg1() throws IOException { Thumbnails.of("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg") .forceSize(400, 300) .toFile("E:\\迅雷下载\\IMG_mj_333333333.jpg"); } /** * 压缩至指定图片尺寸(例如:横400高300),保持图片比例 * 若图片横比200小,高比300小,不变 * 若图片横比200小,高比300大,高缩小到300,图片比例不变 * 若图片横比200大,高比300小,横缩小到200,图片比例不变 * 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300 */ private static void compressImg2() throws IOException { Thumbnails.of("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg") .size(200, 300) .toFile("E:\\迅雷下载\\IMG_mj_555555555.jpg"); } /** * 压缩至指定图片尺寸(例如:横400高300),保持图片不变形,多余部分裁剪掉 * <p> */ private static void cutImg() throws IOException { String imagePath = "E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg"; BufferedImage image = ImageIO.read(new File(imagePath)); Thumbnails.Builder<BufferedImage> builder = null; int imageWidth = image.getWidth(); int imageHeight = image.getHeight(); if ((float) 300 / 400 != (float) imageWidth / imageHeight) { if (imageWidth > imageHeight) { image = Thumbnails.of(imagePath).height(300).asBufferedImage(); } else { image = Thumbnails.of(imagePath).width(400).asBufferedImage(); } builder = Thumbnails.of(image).sourceRegion(Positions.CENTER, 400, 300).size(400, 300); } else { builder = Thumbnails.of(image).size(400, 300); } builder.outputFormat("jpg").toFile("E:\\迅雷下载\\IMG_mj_444444"); } /** * 图片旋转 * rotate(角度),正数:顺时针 负数:逆时针 * 注意:旋转过后不是图片的空白地方变成黑色 */ private static void rotators() throws IOException { Thumbnails.of("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg") .size(400, 300) .rotate(90) .toFile("E:\\迅雷下载\\IMG_mj_66666666.jpg"); Thumbnails.of("E:\\迅雷下载\\4c1c8e5bfd6663f788acb9a9665f3ffc.jpg") .size(400, 300) .rotate(-45) .toFile("E:\\迅雷下载\\IMG_mj_7777777777.jpg"); } /** * 水印图片 */ private static void watermark1() throws IOException { //watermark(位置,水印图,透明度) Thumbnails.of("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg") .size(1280, 1024) .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("E:\\迅雷下载\\4c1c8e5bfd6663f788acb9a9665f3ffc.jpg")), 0.5f) .outputQuality(0.8f) .toFile("E:\\迅雷下载\\88888888.jpg"); Thumbnails.of("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg") .size(1280, 1024) .watermark(Positions.CENTER, ImageIO.read(new File("E:\\迅雷下载\\4c1c8e5bfd6663f788acb9a9665f3ffc.jpg")), 0.5f) .outputQuality(0.8f) .toFile("E:\\迅雷下载\\IMG_9999999.jpg"); } /** * 文字水印,将文字生成图片,然后水印上去 */ private static void watermark2() throws IOException { BufferedImage bi = new BufferedImage(64, 64, BufferedImage.TYPE_INT_RGB); Graphics2D g = bi.createGraphics(); g.setColor(Color.GREEN); g.setBackground(new Color(1.0F, 0.75F, 0.0F, 0.45F)); g.drawRect(0, 0, 64, 64); char[] data = "mujie.com".toCharArray(); g.drawChars(data, 0, data.length, 5, 32); Thumbnails.of(new File("E:\\迅雷下载\\71a1cf16aef8ae492e7df6b9c864225c.jpg")) .scale(0.5f) .watermark(Positions.CENTER, bi, 0.9f) .toFile(new File("E:\\迅雷下载\\IMG_45455555555.jpg")); } /** * 若png、gif格式图片中含有透明背景,使用该工具压缩处理后背景会变成黑色,这是Thumbnailator的一个bug,预计后期版本会解决。 */}
0 0
原创粉丝点击