ImageMagick脚本失败,文件名或扩展名过长(-稀疏颜色)

ImageMagick脚本失败,文件名或扩展名过长(-稀疏颜色),imagemagick,imagemagick-convert,Imagemagick,Imagemagick Convert,问题 在我很短的脚本中,我遇到了一个问题,它有时会报告文件名或扩展名太长。根据脚本中的$image和$size值,此错误可能会发生,也可能不会发生 例如,下面的脚本使用从-保存并转换为“example3.png”的图像生成此错误 我确实在windows上使用版本:ImageMagick 7.0.10-62 Q16 x64,我不知道如何处理错误消息。。。你知道这里有什么问题吗 Powershell脚本 ##################### # Setup ##################

问题

在我很短的脚本中,我遇到了一个问题,它有时会报告文件名或扩展名太长。根据脚本中的
$image
$size
值,此错误可能会发生,也可能不会发生

例如,下面的脚本使用从-保存并转换为“example3.png”的图像生成此错误

我确实在windows上使用版本:ImageMagick 7.0.10-62 Q16 x64,我不知道如何处理错误消息。。。你知道这里有什么问题吗

Powershell脚本

#####################
# Setup
#####################

$image = "./example3.png"
$out = "./result.png"
$outPalette = "./palette.png"

$size = 50
$fuzz = 50
$colors = 6
$resizedSize = "$($size)x$($size)`!"
$histogramSize = "$($size)x$($size)"

#####################
# Program
#####################

Write-Host ""

# 1) Scale + change depth + remove unwanted colors (b/w)
Write-Host "- Step 1..." -ForegroundColor Green
magick convert $image -scale $resizedSize -depth 8 `
    -fuzz $fuzz -transparent black -transparent white `
    $out

#2) create histogram with the help of the sparse colors
Write-Host "- Step 2..." -ForegroundColor Green
$dataHistogram = magick convert -size $histogramSize xc: -sparse-color voronoi ( magick convert $out sparse-color: ) +dither -colors $colors -depth 8 -format %c histogram:info:

# ... more ...
编辑:调整

  • magick convert
    替换为
    magick
  • $fuzz=50
    替换为
    $fuzz=“50%”
  • $size=50
    替换为
    $size=100
更多图像现在可以正常工作,但以下图像仍会出现相同错误:

Edit2:

内部magick命令(
magick convert$out sparse color:
)的结果如下所示:

# ImageMagick pixel enumeration: 100,100,255,srgba
0,0: (87,72,86,0)  #57485600  srgba(87,72,86,0)
1,0: (105,81,91,0)  #69515B00  srgba(105,81,91,0)
...

我不确定powershell发生了什么,但如果问题是命令行的长度,您可以从如下文件中提供稀疏颜色:

magick -size 800x600 xc: -sparse-color voronoi @colors.txt result.png
echo "10,10 red 200,200 yellow" | magick -size 800x600 xc: -sparse-color voronoi @- result.png
或者在
stdin
上,如下所示:

magick -size 800x600 xc: -sparse-color voronoi @colors.txt result.png
echo "10,10 red 200,200 yellow" | magick -size 800x600 xc: -sparse-color voronoi @- result.png

我不确定powershell发生了什么,但如果问题是命令行的长度,您可以从如下文件中提供稀疏颜色:

magick -size 800x600 xc: -sparse-color voronoi @colors.txt result.png
echo "10,10 red 200,200 yellow" | magick -size 800x600 xc: -sparse-color voronoi @- result.png
或者在
stdin
上,如下所示:

magick -size 800x600 xc: -sparse-color voronoi @colors.txt result.png
echo "10,10 red 200,200 yellow" | magick -size 800x600 xc: -sparse-color voronoi @- result.png

请注意,
magick convert…
几乎总是错误的。请注意,
-fuzz
最好与百分比一起使用,而不是绝对值,因为
红色+/-50
在0..255范围内的8位图像上与0..65535范围内的16位图像上的
红色+/-50
非常不同。谢谢-看起来像我的值fuzz是个问题。。。第一次测试表明,使用50%(我希望是这样)可以解决问题issue@MarkSetchell我做了您提到的调整,并将此信息添加到我的问题中-我现在仍然看到此错误,有进一步的想法吗?您能将实际的错误消息编辑到您的问题中吗?另外,我不知道powershell的语法。我假定
magick…(magick…
使用内部
magick
命令的结果运行外部
magick
命令?如果是,,请您分离出内部
magick
命令的结果好吗?仅用于调试目的。请注意
magick convert…
几乎总是错误的。请注意
-fuzz
最好与百分比一起使用,而不是绝对值,因为
红色+/-50
在0..255范围内的8位图像上非常不同相对于0..65535范围内的16位图像上的
红色+/-50
。谢谢-似乎我的模糊值是问题所在。。。第一次测试表明,使用50%(我希望是这样)可以解决问题issue@MarkSetchell我做了您提到的调整,并将此信息添加到我的问题中-我现在仍然看到此错误,有进一步的想法吗?您能将实际的错误消息编辑到您的问题中吗?另外,我不知道powershell的语法。我假定
magick…(magick…
使用内部
magick
命令的结果运行外部
magick
命令?如果是这样的话,你能把内部
magick
命令的结果分离出来吗?只是为了调试的目的。实际上,我试过这个。我甚至在命令行上尝试过,但我找不到一种适用于windows的语法。例如,以下作品:
magick-尺寸100x100 xc:-稀疏颜色voronoi“0,0#57485600 1,0#69515B00 2,0#78566000 3,0#835E6700 4,0#95666F00”test.png
。将此命令中完全相同的文本放入文本文件并运行
magick-size 100x100 xc:-sparse color voronoi@colors2.txt test.png
将失败,参数数
无效@error/operations.c/SparseColorOptions/252
…感谢您的耐心和花时间的帮助-我找到了提供数据的原因通过文件不起作用-我在导出文件时忘记定义正确的编码。将其编码为UTF-8或ASCII,并通过
@colors.txt
读取。实际上,我尝试了这个方法。我甚至在命令行上尝试过,但我找不到一种适用于windows的语法。例如,以下作品:
magick-尺寸100x100 xc:-稀疏颜色voronoi“0,0#57485600 1,0#69515B00 2,0#78566000 3,0#835E6700 4,0#95666F00”test.png
。将此命令中完全相同的文本放入文本文件并运行
magick-size 100x100 xc:-sparse color voronoi@colors2.txt test.png
将失败,参数数
无效@error/operations.c/SparseColorOptions/252
…感谢您的耐心和花时间的帮助-我找到了提供数据的原因通过文件不起作用-我在导出文件时忘记定义正确的编码。将其编码为UTF-8或ASCII,并通过
@colors.txt
读取