用“python-mosaic图像”从图像创建马赛克``
osaic的Python项目详细描述
osaic是一个简单的python模块,它允许您从 通过发出简单的python -mosaic foo.jpg命令生成图像。
基本思想是将一组图像作为输入:第一组图像用作 最后拼图的背景;其他的按平均值索引 最后的马赛克上的颜色和花边,如瓷砖。
此外,用户还可以指定马赛克的最终尺寸 (相对于初始目标图像的大小)和 每边使用的瓷砖。
依赖关系
模块依赖于pythonPIL库(由 安装脚本),用于与image有关的所有操作 正在处理。另外,添加对jpegs和pngs的支持 图像,并使模块能够在屏幕上显示马赛克,请 安装libjpeg、libpng和libtk。
安装
要安装osaic,可以从mercurial和 存储库和来自python包索引(pypi)。前者是 更适合bleeding edge用户,即使是强悍的后者也不是 保证very稳定。
汞
来源:
cd /wherever/you/want hg clone https://bitbucket.org/iamFIREcracker/osaic python setup.py install
Pypi
来源:
cd /path/to/workspace wget http://pypi.python.org/packages/source/o/osaic/osaic-2.0.0.tar.gz tar zxvf osaic-2.0.0.tar.gz cd osaic-2.0.0 python setup.py install
来自pypi:
pip install osaic
用法
osaic是一个既可以用作独立应用程序的模块 作为一个标准的python模块。
独立应用程序
该应用程序的一个典型用法是显示马赛克构图 从源图像创建:
python -mosaic image.jpg
如果要将输出保存到文件而不是显示它:
python -mosaic image.jpg -o mosaic-image.jpg
最后,如果你想创建一个比 原始图像,每面100块,只需发布:
python -mosaic -z4 -t100 image.jpg
对于其他一切,请使用帮助消息:
python -mosaic -h
库
模块是对象和函数的集合,它们具有不同的 功能:矢量函数,颜色转换,image 对象、图像索引和过程包装器。
对于向量运算,该模块实现了一些基本的 函数不包含在标准python中,但在使用时很有用 颜色:
>>> dotproduct([1, 2, 3], [4, 5, 6]) 70 >>> difference([1, 2, 3], [1, 2, 3]) [0, 0, 0] >>> squaredistance([1, 2, 3], [0, 0, 0]) 30
也可以找到两个函数 颜色操作,如计算图像的平均颜色和 颜色量化。后者在尝试 将CPU工作负载保持在低水平:
>>> average_color('almost-red.png') (240, 10, 20) >>> quantize_color((240, 10, 20), levels=2) (192, 64, 64)
如前所述,模块构建在python^{tt2}之上$
图书馆。但是,我们选择不导出这样的external对象,而是
而是向用户展示一些包装器,即ImageWrapper
:
>>> img = Image.open('foo.png') >>> img.size (640, 480) >>> img.reratio(5 / 1) >>> img.crop((0, 0, 10, 10)) >>> img.size (10, 10) >>> img.show()
在制作马赛克的时候,有可能 为一组图像编制索引并使其能够搜索 就average color而言,与另一种颜色最相似。这个 ImageListobject随模块一起提供,原因如下:
>>> img_list = ImageList(['1.png', '2.png', '3.png']) >>> img_list.search((255, 0, 0)) ImageTuple(filename='1.png', color=(255, 0, 0), image=None)
最后,模块附带了一个mosaicify函数,该函数包装 创建马赛克所需的所有操作,包括源图像 根据平均值对相邻图像进行索引和搜索 颜色:
>>> import osaic >>> osaic.mosaificy( ... target='foo.png', ... sources=['bar.png', 'asd.png', 'bazinga.png'], ... tiles=128, ... zoom=4, ... output='mosaic.png', ... )