图片批处理工具
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图片批处理工具相关的知识,希望对你有一定的参考价值。
如何根据图片的长宽来处理一批图片,一般的图片批处理工具只能做到固定大小,或者限制高,或者限制宽,或者忽略比例,我现在遇到的问题是,要根据图片高长和宽来判断,那个边长就以那个为最终正方形图片的边,谁知道该如何做,或者有没有软件可以实现,谢谢。
示列 如果一张图片在处理前是500×400,那么经过判断500边是长边,那么最后的图片应该处理为500×500,在高上相差的100应该平均的分配到上下各50。不知道我说明白没有。
可以去官方网站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; } } }
以上是关于图片批处理工具的主要内容,如果未能解决你的问题,请参考以下文章