我想取一个各种尺寸的图像文件夹,并将它们裁剪成一个600x600的网格正方形,从图像的中间切出。是否有一个程序可以自动调整大小和裁剪到这些尺寸,然后输出为压缩的.png文件?对于小于600x600的图像,我希望程序将图像的尺寸增加到该尺寸。
我想取一个各种尺寸的图像文件夹,并将它们裁剪成一个600x600的网格正方形,从图像的中间切出。是否有一个程序可以自动调整大小和裁剪到这些尺寸,然后输出为压缩的.png文件?对于小于600x600的图像,我希望程序将图像的尺寸增加到该尺寸。
Answers:
ImageMagick让您在Windows命令窗口中运行命令。您需要熟悉创建Dos批处理文件。
有关示例,请参见本讨论中的最后一篇文章:http : //www.imagemagick.org/discourse-server/viewtopic.php?f=1& t= 21112
此论坛帖子中的相关示例:
@echo off
cd C:\Users\user\Desktop\New\New folder
convert *.jpg -fuzz 10%% -trim -write %%02d_trim.png -scale "x1!" txt:
convert *_trim.png -crop 209x329+0+0 -fuzz 10%% -trim +repage %%02d_left.png
convert *_trim.png -crop 173x336+227+0 -fuzz 10%% -trim +repage %%02d_right.png
@pause
首先,我认为您想要批量调整大小,许多程序都可以做到这一点。但是后来我意识到,您想将调整大小和裁剪结合在一起,并且希望计算机计算如何从图像中动态地最佳切出600x600像素。
这是因为这不是“一个真正的解决方案”类型的任务,因为通常是人为判断调用,即如何裁剪图像,因此只能通过引导某些条件来完成。例如,查看长宽比,并始终将最短尺寸调整为X和裁剪Y(居中/向右/向左)像素。如果我正确阅读了您的声明,则如果两个尺寸均为600或更大,则希望从两个尺寸的X和Y中心裁剪600个像素。如果尺寸小于600,仅将尺寸调整为600?
我一直很想在我的程序“ Image View Plus More”中添加一个这样的功能,我想功能设置应该是这样的:-裁剪尺寸:wxh-对齐宽度:中心/左/右-对齐高度:中心/左/右-调整大小:否/如果小于/如果大于/都
您还需要其他设置吗?
更新:现在,我已经将该功能编程到Image View Plus More 2.4中:
http://www.sequoiagrove.dk/tools.php
操作方法:安装,将要裁剪的图像拖放到其中,“全部保存到新文件夹”,并为其指定基本名称或%以使用原始文件名,然后在下一个对话框中选择“自动裁剪” ”,然后填写宽度和高度框,然后选择对齐方式“中心”作为高度和宽度,然后选中“如果较小则调整大小”。
我做了一个教程如何做到这一点:
解决OP问题的方法:http : //www.youtube.com/watch?v=wBc1s6zuDJM
如果您喜欢编程,则可以使用Python(计算机语言),并且精通一个库,它知道PIL可以在编程级别进行裁剪,调整大小,绘制直方图,获取单个像素值等。因此,您可以轻松编写一个简单的脚本来查找文件夹中的所有图像并执行操作。
这段代码可以完全满足您的要求,并根据图像大小每秒处理几张图片:
#Python 2.7, PIL 1.1.7
import Image
import glob
import os
#Function to resize image, preserving aspect ratio
def resizeAspect(im, size):
w,h = im.size
aspect=min(size[0]/float(w), size[1]/float(h))
return im.resize((int(w*aspect),int(h*aspect)),Image.ANTIALIAS)
imgList=glob.glob('C:/icons/*.png') #Find all png images in a directory
for img in imgList: #Loop through all found images
im = Image.open(img) #open the image
print "resizing:",os.path.basename(img)
w,h = im.size #Get image width and height
if min(w,h)<600: #Check if either dimension is smaller then 600
im=resizeAspect(im,(600,600)) #Re-size Image
w,h = im.size #update image size
center = [int(w/2.0),int(h/2.0)] #Calculate Center
box = (center[0]-300, center[1]-300, center[0]+300, center[1]+300) #Defines a box where you want it to be cropped
croppedIm = im.crop(box) #Crop the image
#croppedIm.show() #Show the cropped image
fileName, fileExtension=os.path.splitext(img)
croppedIm.save(fileName+'_crop.png', "PNG") #Save the cropped image
当您开始在程序设计层面上工作时,天空就是极限!甚至可以检测到面部并在面部周围裁剪,从而使您可以智能裁剪数千张照片...
[2012年9月12日更新]
Sizzlepig.com是一个在线工具,可以很容易地做到这一点,您可以将“蓝图”的大小设置为600x600,然后将其裁剪为所有图像的中心。
对于“对于小于600x600的图像,我希望程序将图像的尺寸增加到该尺寸。” 我强烈建议您不要尝试放大图像,而是尝试寻找更高质量的信号源。我知道这并不总是可能的,但是与尝试升级相比,它将产生更高的质量输出。
(我为sizzlepig工作,但它仍然是一个很好的工具)
Irfanview可以满足您的要求。它的批处理模式有很多选择。
这是一个小教程链接:http : //gd.tuwien.ac.at/graphics/irfantut/batchcon.html
Irfanview可以执行此操作,但需要进行一些设置。
使用批量转换选项。选择“ PNG”作为输出格式。单击输出格式旁边的“选项”按钮,然后选择所需的压缩,然后单击“确定”。
勾选“使用高级选项”复选框,然后单击“高级”按钮
您会看到此窗口
设置最短边600的调整大小。确保选中“保留长宽比”和“使用重采样功能”。取消勾选“不要放大较小的图像”
如果您要大幅减少原始图像的大小,则可能需要在“ sharpen”框上打钩并添加一个值。我的要求是150x150尺寸的图像,我发现它们需要大约20的锐化值,以匹配我从photoshop获得的图像质量。对于600x600的图像,您可能不需要锐化值-因此您可以取消选中该选项。
而不是使用“裁剪”,而是使用“画布大小”设置-确保选中该选项
单击画布大小选项旁边的“设置”按钮。您会看到此窗口
选择方法2,宽度和高度为600。选择锚点的“中心”选项
画布颜色无关紧要,因为它实际上不会添加图像边框
现在,在高级屏幕上,再次选中“自定义处理顺序”旁边的框,并确保“调整大小”位于列表的第一位-即,使调整大小在裁剪之前完成。
点击确定
确保已选择要转换的文件,设置输出目录,然后单击“开始批处理”
查找Phatch(Linux,Mac,Windows),它正是您所需要的:http : //photobatch.stani.be/download/index.html
http://pixresizer.software.informer.com/上有一个具有多个选项的实用程序。
这是很好的软件。好的手段,易于使用并且工作更快。摄影时,我使用它来批量处理图像。很多时候,我需要减少图片的大小,以便通过互联网共享它们。我也尝试过其他软件,但发现它很好。(我与这家公司没有关系。)
我不知道为什么没人提它,但是我最喜欢的是multipleimageresizer.net。它可以让您做很多事情,例如裁剪,更改格式,大小,添加文本,水印...等。同时显示在多个图像上。
这是一个实时保护程序。我建议!