Powershell imagemagick中STDIN/STDOUT的正确语法

Powershell imagemagick中STDIN/STDOUT的正确语法,powershell,syntax,imagemagick,stdout,stdin,Powershell,Syntax,Imagemagick,Stdout,Stdin,我下载了ImageMagick,这样我就可以批量处理工作中的图像文件夹,将它们裁剪成大小,然后将它们切成12等份。我可以单独完成每个任务,但我更愿意使用STDIN和STDOUT在一行中执行所有任务。然而,即使在浏览了这里的答案和网站上的文档之后,我也没有更进一步地让它发挥作用 我在Windows Powershell中工作。以下是我尝试过的,使用单个图像: convert -crop '5072x3552+87+0' image.jpg jpg:- | convert -crop '1268x1

我下载了ImageMagick,这样我就可以批量处理工作中的图像文件夹,将它们裁剪成大小,然后将它们切成12等份。我可以单独完成每个任务,但我更愿意使用STDIN和STDOUT在一行中执行所有任务。然而,即使在浏览了这里的答案和网站上的文档之后,我也没有更进一步地让它发挥作用

我在Windows Powershell中工作。以下是我尝试过的,使用单个图像:

convert -crop '5072x3552+87+0' image.jpg jpg:- | convert -crop '1268x1184' - jpg: - | convert -crop '1268x1030+0+0' - C:\folder1\folder2\folder3\square.jpg
这给了我一系列错误:

convert.exe:此图像格式“”没有解码委托@ 错误/compose.c/ReadImage/508

convert.exe:未定义图像'jpg:-'@ 错误/convert.c/ConvertImageCommand/3253

convert.exe:此图像格式“”没有解码委托@ 错误/compose.c/ReadImage/508

convert.exe:未定义图像 `C:\users\lmcane\desktop\imagem\test\leaf.jpg'@ 错误/convert.c/ConvertImageCommand/3253

我正在Windows7上使用ImageMagick 7.0.2。Windows PowerShell以管理员身份打开

欢迎提供有关在imagemagick中格式化STDIN和STDOUT的更多指导

谢谢你的帮助


我无法解释为什么
convert
会抛出这些错误,但我能够通过使用以下传输格式使其正常工作:

convert -crop '5072x3552+87+0' image.jpg xwd:- |
    convert -crop '1268x1184' xwd:- xwd:- |
    convert -crop '1268x1030+0+0' xwd:- C:\folder1\folder2\folder3\square.jpg

我会尝试使用
-fuzz
(考虑到边框颜色的细微差异)和
-trim
对边缘进行第一次修剪。这让你明白:

convert grid.png -fuzz 30% -trim trimmed.png
然后,我将平铺到4x3并重新对图像进行平铺,以便它们忘记它们在原始图像中的位置:

convert trimmed.png -crop 4x3@ +repage step2.png
现在裁剪顶部、底部和侧面,并保存单独的12帧:

convert step2.png -crop 130x100+20+20 f-%02d.png
现在,您可以使用稍微不同的模糊来修剪多余部分,因为这里的变化似乎比原始图像的外边缘小。我还将所有命令放在一起,一次完成所有12幅图像的所有步骤:

convert grid.png -fuzz 30% -trim -crop 4x3@ +repage -crop 130x100+20+20 -fuzz 5% -trim f-%02d.png

对于其他图像,您可能需要使用模糊因子,但现在应该看看它是如何工作的。

。。。嗯,它不会抛出任何错误,但是当我将image.jpg更改为image.*.jpg以处理整个批处理时,我在目标文件夹中只得到一个图像,在我的工作目录中得到一个名为“xwd”的文件。我应该在目标文件夹中获得36个图像。每个起始图像是一个12格的网格,左边和底部有多余的部分,我在第一步裁剪掉,在第二步拆分成12格,在第三步裁剪掉一些底部。)如果我不尝试批处理它,这是一样的。我想你让这变得太难了。我知道你有一个满是图片的文件夹,这很好,但我不知道你想对每个图片做什么。你能用简单的英语解释一下吗?你想把它裁剪成什么尺寸?从哪里开始?然后把它分成12等份——这12等份的切片是不是就是这条缝的全宽?还是12片全高?还是3x4?还是4x3?还是6x2?这些切片叫什么?我有一张扫描过的图像,上面有一个3x4的网格,左边和底部有一些多余的。目标:提取网格的每一部分。步骤1)用作物从左侧和底部去除多余部分。步骤2)使用imagemagick的瓷砖裁剪功能将图像分割成12块。步骤3)某些目的要求删除每个结果图像的底部。这是通过进一步裁剪实现的,从而在网格中生成对象的清晰图像。计算每个步骤中的像素高度/宽度,这样就不会留下多余的内容来清理目标文件夹。你可以发布图像吗?我用图像编辑了我的原始帖子。希望它现在对你更有意义。不幸的是,最后的组合线没有工作。坦白地说,我甚至不理解我得到的结果,但这是非常非常不正确的。按顺序做这些行:第一步什么也没做。第二步将图像分成12个部分,因此感谢您教我正确的语法。第三行给了我一个有趣的结果,但我想这一定是因为你使用了我发布的图片作为文字尺寸参考。(真实的图像要大得多。)不管怎样,看起来你可能已经给了我足够的语法参考来继续。无论哪种方式我都会查回来的!成功了!这是我最后的一行:convert grid.jpg-crop 5072x3552+87+0-crop 4x3@+repage-crop 1268x1030+0+0 C:\users\name\desktop\imagem\test\result.jpg感谢您的帮助!所以,即使在这个例子中我不需要使用STDIN/STDOUT,你介意和我分享一下正确的语法吗?对不起,我不知道你所说的“STDIN/STDOUT”方法是什么意思,我也不明白在一个命令足够的情况下使用多个
convert
命令有什么意义。你可以这样做
convert-size 10x10 xc:blue png:-| convert png:--调整200x200结果的大小。png
如果有帮助的话。你对STDIN/STDOUT的看法完全正确。在我的研究过程中,我偶然发现了它,我想我必须在这个过程中使用它。我很高兴事实并非如此!我很难从ImageMagick的文档中提取有用的信息。