gpt4 book ai didi

imagemagick - 有没有办法向 ImageMagick 传递 RGBA 数组以将其渲染为图像?

转载 作者:行者123 更新时间:2023-12-02 06:58:47 24 4
gpt4 key购买 nike

问题几乎说明了一切。

这个想法是生成程序PNG。我知道 imageMagick 的“-fx”运算符,但它非常慢。

解决方法可能是将我的数组保存到 .bmp(这几乎只是保存它),然后使用 ImageMagick 将 .bmp 转换为 .png,但如果有更直接的方法就更好了。

最佳答案

您可以利用 ImageMagick 的 TXT 图像格式来实现此目的。我无法告诉您有关性能的任何信息,您必须对其进行测试。

首先尝试以下操作:

convert  some-small.png  some-small-png.txt
convert some-small.jpg some-small-jpg.txt
convert some-small.tif some-small-tif.txt
[...]

(此转换也可能很慢。)

然后进行相反的转换:

convert  some-small-png.txt  some-small-roundtripped.png
convert some-small-png.txt some-small-roundtripped.jpg
convert some-small-png.txt some-small-roundtripped.tif
[...]

(此转换应该更快。)

将初始 PNG、JPEG、TIFF 与往返的比较。

查看 *.txt 文件以了解其格式:

  • 它是一个正式的文本描述,逐行枚举每个像素的坐标和各自的颜色值。
  • 第一行是标题,描述图像的尺寸、深度和使用的色彩空间。
  • 另请注意,每行中 #(描述相应颜色的十六进制值)之后的所有内容都不是必需的 - 您可以将其视为注释。此外,每行上所有剩余的空格都是可选的。

这意味着您可以重新组织 RGBA 数组,使其与 ImageMagick 的 TXT 图像格式匹配(正如我所说,您既不需要十六进制值,也不需要友好的颜色名称),然后只需调用 convert(添加所需的标题行后)。

<小时/>

更新

我给你举个例子。

这是极其简单的,去掉了空格、名称和颜色的 #hex 值,由 2x2.txt 表示的 2x2 像素 sRGBA 迷你图像。它的文件大小为 129 字节。

cat 2x2.txt # ImageMagick pixel enumeration: 2,2,65535,srgba 0,0:(65535,0,0,65535) 0,1:(0,65535,0,65535) 1,0:(0,0,65535,65535) 1,1:(0,0,0,0)

You an convert this into a PNG image:

convert  2x2.txt  2x2.png

2x2.png 为 293 字节。由于 2x2 像素 PNG 有点太小,无法在网站上识别,我们可以转换为更大的东西:

convert 2x2.txt  -scale 10000%  200x200.png
convert 2x2.txt -scale 1000% 20x20.png

这 2 个 PNG 在网页上是可以识别的:

200x200.png 20x20.png

为了演示完整的格式(不删除空格、名称或颜色的 #hex 值),让我们创建相应的 20x20.txt 并查看它:

convert  20x20.png  20x20.txtcat 20x20.txt  # ImageMagick pixel enumeration: 20,20,255,srgba 0,0: (255,  0,  0,255)  #FF0000  red 1,0: (255,  0,  0,255)  #FF0000  red 2,0: (255,  0,  0,255)  #FF0000  red 3,0: (255,  0,  0,255)  #FF0000  red 4,0: (255,  0,  0,255)  #FF0000  red 5,0: (255,  0,  0,255)  #FF0000  red 6,0: (255,  0,  0,255)  #FF0000  red 7,0: (255,  0,  0,255)  #FF0000  red 8,0: (255,  0,  0,255)  #FF0000  red 9,0: (255,  0,  0,255)  #FF0000  red 10,0: (  0,  0,255,255)  #0000FF  blue 11,0: (  0,  0,255,255)  #0000FF  blue     [....]     [....]     [....] 7,19: (  0,255,  0,255)  #00FF00  lime 8,19: (  0,255,  0,255)  #00FF00  lime 9,19: (  0,255,  0,255)  #00FF00  lime 10,19: (  0,  0,  0,  0)  #00000000  none 11,19: (  0,  0,  0,  0)  #00000000  none 12,19: (  0,  0,  0,  0)  #00000000  none 13,19: (  0,  0,  0,  0)  #00000000  none 14,19: (  0,  0,  0,  0)  #00000000  none 15,19: (  0,  0,  0,  0)  #00000000  none 16,19: (  0,  0,  0,  0)  #00000000  none 17,19: (  0,  0,  0,  0)  #00000000  none 18,19: (  0,  0,  0,  0)  #00000000  none 19,19: (  0,  0,  0,  0)  #00000000  none 

关于imagemagick - 有没有办法向 ImageMagick 传递 RGBA 数组以将其渲染为图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12415294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com