将图片按9宫格等分的简单批处理脚本
首先,为什么要按9宫格等分图片,因为一条微博里最多能上传9张图片。而在微博里,这9张图片的排列规则就是9宫格。通常我们会上传9张不同图片,表达更丰富的内容,但有时候,为了能达到更震撼的效果,9张图片最终拼成的是一张图片,在手机里观看,你会获得不一样的感觉,先看看效果,下面就是一个截图:
问题是,手工用photoshop实现对图片9宫格等分,我没试验过,也不知道怎么做,但想起来也是很复杂的事情。做为一名程序员,我想我应该用程序自动化实现对图片的切割,这才符合程序员的性情。之前的《Windows命令行下批量优化图片脚本》文章里,我使用了ImageMagic这个图片处理工具,它的功能十分强大,而且是开源的,我们可以同样是它来实现今天我们的任务。
下面是我写的一个DOS批处理脚本:
@ECHO OFF
identify -format "%%[fx:w] %%[fx:h]" %1 > t1s2c4s4
set/p param=<t1s2c4s4
rm t1s2c4s4
for /f "tokens=1,2" %%a in ("%param%") do set width=%%a&set height=%%b
set /a rate=%height%*1000/%width%
if %height% LSS %width% (
set /a width=%height%
) ELSE (
set /a height=%width%
)
REM NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast
convert %1 -gravity Center -crop %width%x%height%+0+0 -resize 900 %1.jpg
convert %1.jpg -crop 300x300+0+0 %1.1.jpg
convert %1.jpg -crop 300x300+300+0 %1.2.jpg
convert %1.jpg -crop 300x300+600+0 %1.3.jpg
convert %1.jpg -crop 300x300+0+300 %1.4.jpg
convert %1.jpg -crop 300x300+300+300 %1.5.jpg
convert %1.jpg -crop 300x300+600+300 %1.6.jpg
convert %1.jpg -crop 300x300+0+600 %1.7.jpg
convert %1.jpg -crop 300x300+300+600 %1.8.jpg
convert %1.jpg -crop 300x300+600+600 %1.9.jpg
rem del %1.jpg
如果你把这个脚本命名为test.bat
,这样执行它:
test.bat xxxx.jpg
在《Windows命令行下批量优化图片脚本》这篇文章里的注释里,一位叫”neorobin“的网友给出了一些优化的建议,非常的好,他的这个优化技巧也可以用在这个脚本里,有兴趣的朋友可以自己实现。
这个脚本的先会尽可能的按最大尺寸将提供的图片裁剪成正方形,然后将正方形等分成9个小图片。图片的名称后缀分别含有是1-9的序号,这样上传微博时可以参照这个序号上传。
除了等分的这九张图片外,我还保留了最初裁剪出来的那个正方形的图片,通过这个图片,你可以看出裁剪图片时主景是否留着了正方形内。因为,有些图片的主景/人物并不是居中的,有可能在图片的偏左侧,或偏右侧,如果我们居中裁剪出一个正方形,有可能主体有可能会被裁掉一半。
在上面的脚本里,有一个叫-gravity
的参数指标,它是用来决定裁剪的中心的,缺省值是Center
(居中),它的取值还可以是“NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast”等方位,你可以根据图片上主景观的布局方位来调整这个参数。
欢迎指正,谢谢!