Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python魔杖替换颜色,但坐标未知_Python_Replace_Colors_Imagemagick_Wand - Fatal编程技术网

使用python魔杖替换颜色,但坐标未知

使用python魔杖替换颜色,但坐标未知,python,replace,colors,imagemagick,wand,Python,Replace,Colors,Imagemagick,Wand,我知道,但这两个都使用类似 draw.color(192,84,'replace') 其中需要传递相关颜色像素的位置。如果您知道要替换的颜色,但不知道其位置,该怎么办?我想替换图像中像素的颜色,而不传递对该颜色像素位置的引用。你真的需要扫描整个图像来寻找你已经知道的东西吗 imagemagick的等价物是 convert balloon.gif -fill white -opaque blue balloon_white.gif 如果要匹配-opaque功能,则需要实现MagickO

我知道,但这两个都使用类似

    draw.color(192,84,'replace')
其中需要传递相关颜色像素的位置。如果您知道要替换的颜色,但不知道其位置,该怎么办?我想替换图像中像素的颜色,而不传递对该颜色像素位置的引用。你真的需要扫描整个图像来寻找你已经知道的东西吗

imagemagick的等价物是

convert balloon.gif -fill white -opaque blue balloon_white.gif

如果要匹配
-opaque
功能,则需要实现
MagickOpaquePaintImage
C方法

导入ctypes
从wand.api导入库
从wand.image导入图像
从wand.color导入颜色
从wand.compat导入嵌套
#将C-API映射到Python
library.MagickOpaquePaintImage.argtypes=(ctypes.c_void_p,#Wand
ctypes.c_void_p,#目标
c类型c_void_p,#填充
ctypes.c#u double,#fuzz
ctypes.c#u bool)#反转
将图像(filename='rose:')作为img:
将嵌套(颜色('#E93A43')、颜色('ORANGE')作为(目标,填充):
图书馆。MagickOpaquePaintImage(img.wand,
目标资源,
填充资源,
img.quantum_范围*0.10,#-fuzz 10%
(错误)
保存(filename='output.png')

由于wand 0.5.4的方法是不透明的,因此不再需要提出的聪明的hack@emcconville。你可以做的只是:

从wand.image导入图像
将图像(filename='rose:')作为im:
im.不透明油漆(目标='#E93A43',填充='橙色',模糊=0.10)
保存(filename='output.png')

您可以从ImageMagick的开发人员那里尝试PythonMagick。我将尝试看看PythonMagick。不过我还是想理解它。说实话,我有点搞不清楚在python中使用什么模块来操作图像。谢谢@emcconville,这绝对有效。我很好奇,想知道你用了什么资源来构思这个答案,以便有一天我自己能够做到;)很乐意帮忙。如果这回答了您的原始问题,请将其标记为“已接受”,以便其他读者知道您的问题已解决。至于有助于理解的资源:这就是开放源代码的魅力所在,没有什么能阻止您阅读源代码,一旦您对作者的设计有了基本的了解,所有移植的语言绑定都会变得非常清晰。