图片批处理工具

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图片批处理工具相关的知识,希望对你有一定的参考价值。

如何根据图片的长宽来处理一批图片,一般的图片批处理工具只能做到固定大小,或者限制高,或者限制宽,或者忽略比例,我现在遇到的问题是,要根据图片高长和宽来判断,那个边长就以那个为最终正方形图片的边,谁知道该如何做,或者有没有软件可以实现,谢谢。
示列 如果一张图片在处理前是500×400,那么经过判断500边是长边,那么最后的图片应该处理为500×500,在高上相差的100应该平均的分配到上下各50。不知道我说明白没有。

你的意思是,如何把一个长方形图片变成一个以大边为边长的正方形是把!你可以使用ImageMagick批量对图片进行处理。ImageMagick是一个强大的命令行图像处理软件,配合dos命令,就可以批量对大量图片进行处理了。
可以去官方网站http://www.imagemagick.org下载最新版本的ImageMagick。
安装后就可以在dos窗口中采用convert命令对图片进行转换了,命令格式如下:
JAVA手机网[www.cnjm.net]convert <输入图片名> [+/-命令和命令的参数]* <输出图片名>

其中命令的执行是有顺序的,按照从左至右的顺序依次执行,比如:
convert 1.jpg -crop 300x300+0+0 -resize 200x200 -colors 100 +profile "*" 1.png
表示:把1.jpg先从左上角(0,0)裁剪一块300x300的部分,然后把这部分缩小到200x200,然后把颜色缩减到100色,最后生成1.png。"+profile "*""意味着在图片文件里不存储附加信息,以减小图片体积。
注意,-resize会试图保留原图的视觉比例,因此不一定生成的图片和你指定的尺寸一定匹配,比如,如果2.jpg大小是400x200,那么如果用下面的命令:
convert 2.jpg -resize 100x100 2.png
那么生成的图片2.png的实际大小是100x50。常用的命令有:
-crop 宽x高+起点横坐标+起点纵坐标:裁剪图
-resize 宽x高[!]:改变尺寸,如果使用惊叹号,表示不保留视觉比例,强行改变尺寸匹配给定的宽和高
-colors 颜色数:设定图片采用的颜色数,如果是生成png或gif图片应指定这个参数
-quality 质量:设定jpeg图片输出质量,推荐采用80,此命令仅用于输出格式是jpg的情况,不应省略,省略的话默认质量是95,生成图片过大
+profile "*":图片中不存储附加信息,必须使用,否则生成图片过大

参考资料:http://www.cnjm.net/tech/article1015.html

参考技术A 好麻烦

工具类ImageUtil——图片处理

这个工具类完成的工作如下:

1、第一个static方法,完成图片格式的转换。统一转换成.jpg格式。

 

package util;

import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.DataBuffer;
import java.awt.image.DataBufferInt;
import java.awt.image.DirectColorModel;
import java.awt.image.PixelGrabber;
import java.awt.image.Raster;
import java.awt.image.WritableRaster;
import java.io.File;
/*
 * 处理图片的工具类:
 * 定义了3个方法
 */
public class ImageUtil {
    //图片格式的转换,统一转换成.jpg格式
    public static BufferedImage change2jpg(File f) {
        try {
            java.awt.Image i = Toolkit.getDefaultToolkit().createImage(f.getAbsolutePath());
            PixelGrabber pg = new PixelGrabber(i, 0, 0, -1, -1, true);
            pg.grabPixels();
            int width = pg.getWidth(), height = pg.getHeight();
            final int[] RGB_MASKS = { 0xFF0000, 0xFF00, 0xFF };
            final ColorModel RGB_OPAQUE = new DirectColorModel(32, RGB_MASKS[0], RGB_MASKS[1], RGB_MASKS[2]);
            DataBuffer buffer = new DataBufferInt((int[]) pg.getPixels(), pg.getWidth() * pg.getHeight());
            WritableRaster raster = Raster.createPackedRaster(buffer, width, height, width, RGB_MASKS, null);
            BufferedImage img = new BufferedImage(RGB_OPAQUE, raster, false, null);
            return img;
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }
}

 

以上是关于图片批处理工具的主要内容,如果未能解决你的问题,请参考以下文章

ps批处理图片小技巧

图片处理 - PHP 工具类

图片处理工具类

自动裁剪图像的批处理工具?

ShareX 图片处理工具

python-pyQt5: 界面布局,实现可视化图片、视频处理工具