核心Python中的图像处理解决方案
我需要在Python中进行一些简单的图像处理,但有个限制,就是只能用标准的Python,不允许使用任何第三方模块,连PIL都不行。
我需要的功能是缩放图像,最好能比简单的像素丢弃或保留更好,能通过插值来生成看起来还不错的图像。根据我的想法,我的选择有:
- 使用imageop库——这个库只在Python 2中可用,而且在缩放时不进行插值处理。
- 直接把一些合法可用的图像处理库的代码包含到我的代码里,或者至少包含完成我任务所需的部分。
我其实有两个问题:
- 有没有其他的办法可以考虑呢?
- 如果我选择第二个选项,你推荐哪个库,为什么?哪个库最容易只包含我需要的代码等等?
1 个回答
2
你可以把纯Python的 pymaging 库和你的应用程序打包在一起,这样只会增加大约40K的大小。
$ git clone https://github.com/ojii/pymaging.git
Cloning into 'pymaging'...
[...]
$ (cd pymaging && zip -r pymaging.zip pymaging/)
adding: pymaging/ (stored 0%)
[...]
$ (echo 'pymaging_zip = """' && base64 pymaging/pymaging.zip && echo '"""') > out.py
$ cat >> out.py <<'EOF'
import tempfile
import os
import sys
import base64
pymaging_tmp_fd, pymaging_tmp_path = tempfile.mkstemp(suffix='.zip')
os.write(pymaging_tmp_fd, base64.b64decode(pymaging_zip))
os.close(pymaging_tmp_fd)
sys.path.append(pymaging_tmp_path)
import pymaging
EOF
$ wc -c out.py
40420 out.py
这个过程会把pymaging库打包成一个zip文件,然后把这个zip文件嵌入到你的应用程序里。它会把zip文件写入一个临时文件,然后利用Python从zip文件中导入库的功能。
你可能需要考虑在使用完后清理这个临时文件,特别是在Windows系统上使用的时候。