Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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_Colors_Actionscript - Fatal编程技术网

Python 基于图像算法的调色板

Python 基于图像算法的调色板,python,colors,actionscript,Python,Colors,Actionscript,我正在尝试写一个简短的脚本,它将从一幅图像和最终的一系列图像中生成并优化调色板 我发现了这段很棒的动作脚本代码,它正是我所需要的 并着手制作一个pythonic版本,但很难启动并运行它,部分原因可能是pythonforloops是如何工作的 任何关于我可能出错的想法,我都很感激 从手机发帖(还不值得github发帖),这里是Dropbox中文件的链接 导入json 输入数学 将urllib2导入为urllib 导入颜色数学 从cStringIO导入StringIO 从PIL导入图像,图像调色

我正在尝试写一个简短的脚本,它将从一幅图像和最终的一系列图像中生成并优化调色板

我发现了这段很棒的动作脚本代码,它正是我所需要的

并着手制作一个pythonic版本,但很难启动并运行它,部分原因可能是pythonforloops是如何工作的

任何关于我可能出错的想法,我都很感激

从手机发帖(还不值得github发帖),这里是Dropbox中文件的链接

导入json
输入数学
将urllib2导入为urllib
导入颜色数学
从cStringIO导入StringIO
从PIL导入图像,图像调色板
req=urllib.urlopen('http://media-cache-ec0.pinimg.com/237x/27/6f/07/276f07de404a4c9e16bcb3898bbe574a.jpg')
res=StringIO(req.read())
image=image.open(res)
image\u colors=image.getcolors(256*256)
#调色板=图像。转换(“P”,调色板=图像。自适应,颜色=256)
#palette\u colors=palette.getpalette()
颜色\u排序=排序(图像\u颜色,反向=真)
仅def颜色(已排序的颜色):
仅颜色=[]
对于已排序的每个颜色:
仅适用于颜色。附加(每个[1])
仅限返回颜色
def类似(颜色1,颜色2,公差=0.01):
距离=0
公差=公差*(255.00*255.00*3.00)
距离+=数学功率(color1[0]-color2[0],2)
距离+=数学功率(color1[1]-color2[1],2)
距离+=数学功率(color1[2]-color2[2],2)
打印距离
印刷公差

如果距离我也在手机上,所以不能把它发展成一个完整的答案,但我建议看一下PIL,而不是试图自己直接做太多。这里有一个使用调色板的例子:@Neil谢谢你的回复。我一直在玩PIL&使用另一个链接中建议的convert函数。它对于减小调色板大小很有用,但我想从图像中提取有趣的颜色,而不是减小调色板(并失去真实颜色),如我链接到的示例中所示。也许有一种方法可以用PIL实现这一点?
import json
import math
import urllib2 as urllib
import colormath
from cStringIO import StringIO
from PIL import Image, ImagePalette

req = urllib.urlopen('http://media-cache-ec0.pinimg.com/237x/27/6f/07/276f07de404a4c9e16bcb3898bbe574a.jpg')
res = StringIO(req.read())

image = Image.open(res)
image_colours = image.getcolors(256*256)
# palette = image.convert("P", palette=Image.ADAPTIVE, colors=256)
# palette_colours = palette.getpalette()

colours_sorted = sorted(image_colours,reverse=True)

def colours_only(colours_sorted):
    colour_only = []
    for each in colours_sorted:
        colour_only.append(each[1])
    return colour_only

def similar(colour1, colour2, tolerance = 0.01):
    distance = 0
    tolerance = tolerance * (255.00 * 255.00 *3.00)

    distance += math.pow(colour1[0] - colour2[0], 2)
    distance += math.pow(colour1[1] - colour2[1], 2)
    distance += math.pow(colour1[2] - colour2[2], 2)

    print distance
    print tolerance
    if distance <= tolerance:
        return True


def different(colour, colours, tolerance = 0.01):
    for col in colours:
        if similar(colour,col,tolerance) == True:
            return False
    return True

def unique_colours(colours,tolerance = 0.01):
    unique = []
    x = 0
    for each in colours:
        while x < len(unique)
            if different(each, unique, tolerance) and :
                unique.append(item)
        return unique

print different((255,0,0),colours_only(colours_sorted))
print unique_colours(colours_only(colours_sorted))