Java工具类——实现gif图片缩放与剪切功能

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

                比较实用, 可以处理gif动态图片

java图片处理工具类:

package com.pinker.util;import java.awt.Color;import java.awt.Graphics;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.Arrays;import java.util.Iterator;import javax.imageio.IIOImage;import javax.imageio.ImageIO;import javax.imageio.ImageReader;import javax.imageio.ImageWriter;import javax.imageio.stream.ImageInputStream;import javax.imageio.stream.ImageOutputStream; /** * 图像裁剪以及压缩处理工具类 * * 主要针对动态的GIF格式图片裁剪之后,只出现一帧动态效果的现象提供解决方案 * * 提供依赖三方包解决方案(针对GIF格式数据特征一一解析,进行编码解码操作) * 提供基于JDK Image I/O 的解决方案(JDK探索失败) */public class ImageUtil2 {     public enum IMAGE_FORMAT{        BMP("bmp"),        JPG("jpg"),        WBMP("wbmp"),        JPEG("jpeg"),        PNG("png"),        GIF("gif");                 private String value;        IMAGE_FORMAT(String value){            this.value = value;        }        public String getValue() {            return value;        }        public void setValue(String value) {            this.value = value;        }    }              /**     * 获取图片格式     * @param file   图片文件     * @return    图片格式     */    public static String getImageFormatName(File file)throws IOException{        String formatName = null;                 ImageInputStream iis = ImageIO.createImageInputStream(file);        Iterator<ImageReader> imageReader =  ImageIO.getImageReaders(iis);        if(imageReader.hasNext()){            ImageReader reader = imageReader.next();            formatName = reader.getFormatName();        }         return formatName;    }         /*************************  基于三方包解决方案    *****************************/    /**     * 剪切图片     *     * @param source        待剪切图片路径     * @param targetPath    裁剪后保存路径(默认为源路径)     * @param x                起始横坐标     * @param y                起始纵坐标     * @param width            剪切宽度     * @param height        剪切高度              *     * @returns            裁剪后保存路径(图片后缀根据图片本身类型生成)         * @throws IOException     */    public static String cutImage(String sourcePath , String targetPath , int x , int y , int width , int height) throws IOException{        File file = new File(sourcePath);        if(!file.exists()) {            throw new IOException("not found the image:" + sourcePath);        }        if(null == targetPath || targetPath.isEmpty()) targetPath = sourcePath;                 String formatName = getImageFormatName(file);        if(null == formatName) return targetPath;        formatName = formatName.toLowerCase();                 // 防止图片后缀与图片本身类型不一致的情况        String pathPrefix = getPathWithoutSuffix(targetPath);        targetPath = pathPrefix + formatName;                 // GIF需要特殊处理        if(IMAGE_FORMAT.GIF.getValue() == formatName){            GifDecoder decoder = new GifDecoder();              int</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值