问题标签 [pillow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
18106 浏览

python - Python/PIL 仿射变换

这是 PIL 中的一个基本转换问题。在过去的几年里,我至少尝试过几次来正确地实现这一点,似乎我对 PIL 中的 Image.transform 不太了解。我想实现一个相似变换(或仿射变换),我可以清楚地说明图像的限制。为了确保我的方法有效,我在 Matlab 中实现了它。

Matlab 实现如下:

这按预期工作。这是输入:

在此处输入图像描述

这是输出:

在此处输入图像描述

这是实现相同转换的 Python/PIL 代码:

这是 Python 的输出:

在此处输入图像描述

多年来,我已经在多个操作系统上使用多个版本的 Python 和 PIL 进行了尝试,结果始终基本相同。

这是说明问题的最简单的情况,我知道如果它是我想要的旋转,我可以使用 im.rotate 调用进行旋转,但我也想剪切和缩放,这只是一个示例来说明问题。我想为所有仿射变换获得相同的输出。我希望能够做到这一点。

编辑:

如果我将转换线更改为:

这是我得到的输出:

在此处输入图像描述

编辑#2

我旋转了 -45 度并将偏移量更改为 -0.5*mnx 和 -0.5*mny 并获得了这个:

在此处输入图像描述

0 投票
1 回答
1042 浏览

python-3.x - Pillow 2.0 拒绝使用 zlib

我已经采取了很多方法来试图让它发挥作用,我的头在旋转。

我用 Python 3.3.1 在 Lubuntu 13.04 (Raring Ringtail) 上安装了 Pillow。每当我尝试打开 PNG 图像时,它都会升起,AttributeError: 'module' object has no attribute 'zip_decoder'然后是OSError: decoder zip not available. 我已经手动编译了 zlib,它存在于/usr/local/zlib/lib/libz.so. /usr/lib/libz.so还有一个指向它的软链接。我还zlib1g通过 Synaptic 安装了该软件包。

我尝试通过以下所有方法安装 Pillow:

  • 通过 Synaptic,使用 python3-imaging 包
  • 通过pip3
  • 手动下载/解压/编译

在我尝试pip3手动编译时,我得到了这个输出:

在手动安装时,我进入setup.py并给出ZLIB_ROOT一个值'/usr/local/zlib/lib'

然而,在这一切之后,Pillow 完全拒绝承认我的机器上存在 zlib 的事实,并且在没有 ZIP 支持的情况下进行编译。

我错过了什么?

0 投票
2 回答
3608 浏览

python - 在 Python 中丢弃图像时内存泄漏

我目前正在用 Python 编写一个简单的棋盘游戏,我刚刚意识到垃圾收集不会在重新加载图像时从内存中清除丢弃的位图数据。它仅在游戏启动或加载或分辨率更改时才会发生,但它会增加消耗的内存,所以我不能让这个问题得不到解决。

重新加载图像时,所有引用都将传输到新图像数据,因为它与原始图像数据绑定到的变量相同。我试图通过使用强制垃圾收集,collect()但它没有帮助。

我写了一个小样本来演示我的问题。

要运行上面的代码,您需要一个 PNG 图像文件。我的 map.png 的尺寸是 1062×1062。作为 PNG,它是 1.51 MB,作为位图数据,它大约是 3-3.5 MB。使用大图像轻松查看内存泄漏。

运行我的代码时的预期结果:python 的进程一个周期地消耗内存。当它消耗大约 500 MB 时,它会崩溃,但会再次开始消耗内存。

请给我一些建议如何解决这个问题。我很感激每一个帮助。谢谢你。提前。

0 投票
2 回答
619 浏览

python - PIL 已安装,但图像仍未保存

我正在做一个 Django 项目,我是 Python 新手。现在我必须设置我的亚马逊服务器(ubuntu)来运行 Django 项目。我安装了所有必要的包,我的项目正在服务器上运行,但主要问题来了。我想在服务器上存储图像,因为我需要安装PIL它,我认为它用于处理图像文件。我安装了 PIL,我解决了一些依赖问题,安装的输出PIL如下:

我还创建了以下文件的符号链接:

但我仍然无法将图像存储在服务器上。一个错误来了'decoder jpeg not available'。现在我很困惑。请帮助我摆脱这个问题。我也安装了枕头,但仍然没有成功。

0 投票
1 回答
698 浏览

python - python枕头(更好的PIL)编码检查错误

我刚刚在我的 virtualenv 中安装了一个 Pillow 包。这样做:

我收到一个错误:

事实上,如果你查看官方 gihub 存储库(https://github.com/python-imaging/Pillow/blob/master/PIL/ImageFont.py#L264),你可以看到这个结构:

我的问题是:如何用实际有效的东西替换它?

0 投票
1 回答
6421 浏览

django - IOError 解码器 zip 不可用

我正在尝试使用sorl 缩略图启动并运行,但出现错误“解码器 zip 不可用”。

我已经阅读了大量类似的页面,说这是一个 PIL / Pilow 问题。

我尝试通过以下方式重新安装 pil:

也:

读到Ubuntu 为 x64 架构使用了一个名为 /lib/x86_64-linux-gnu 的目录。如果您使用的是该架构,则需要为此以及其他共享库创建符号链接。

附加信息:

操作系统:Ubuntu Precice

我没有尝试从源代码安装包 zlib,其他一些人也提到过它对他们有用。

0 投票
3 回答
3588 浏览

django - 调整缩略图 django Heroku,“后端不支持绝对路径”

我已经使用 Django 在 Heroku 上部署了一个应用程序,到目前为止它似乎正在运行,但我在上传新缩略图时遇到了问题。我已安装 Pillow 以允许我在上传图像时调整图像大小并保存调整后的缩略图,而不是原始图像。但是,每次上传时,我都会收到以下错误:“此后端不支持绝对路径。” 当我重新加载页面时,新图像在那里,但没有调整大小。我正在使用 Amazon AWS 来存储图像。

我怀疑它与我的models.py有关。这是我的调整大小代码:

有什么我想念的吗?我需要告诉它别的吗?

0 投票
1 回答
703 浏览

django - IOError:无法识别图像文件——在本地工作,但在 Heroku 上不工作

我知道 StackOverflow 上有无数关于这个错误的问题和答案,我已经阅读了所有这些并尝试了他们的许多建议(Pillow 代替 PIL,io.BytesIO 代替 stringIO),但我仍然遇到同样的问题具有以下内容:

我正在编写代码来处理来自 S3 的图像——特别是将它们重新保存为 JPG,如有必要可以旋转它们,并创建各种缩略图。代码的相关部分获取引用 S3 上图像的 URL 列表。我可以确认,是的,图像位于 URL 指定的位置的 S3 上。在每个 URL 上,我调用以下内容:

此代码在本地运行良好。但是当我在 Heroku 的暂存环境中运行它时,我得到“IOError:无法识别图像文件”。它在 JPG、PNG 和 GIF 上失败,这些都在本地工作。

关于我的环境的细节:

Django==1.5.1

枕头==2.1.0

pilkit==1.1.1

Python 2.7.3(两者上)

本地枕头编译:

在 Heroku Pillow 上编译:

0 投票
2 回答
1526 浏览

python - 在 Python Pillow / PIL 中绘制不同透明度的多边形

我有以下代码:

但多边形之间的 alpha/透明度没有任何差异。是否可以使用这些多边形来执行此操作,或者 alpha 级别是否仅适用于合成图像(我知道这个解决方案,但只看到基于 PIL 的评论,并认为我已经在 Pillow 中看到了这个问题)。

如果这样的东西不可用,是否有一种很好、简单、有效的方法可以把这样的东西放在图书馆里?

0 投票
2 回答
206 浏览

python - 以编程方式删除 Apple Screen Capture 阴影边框

内置的 MacOS 屏幕捕获程序 (command-shift-4) 有一个很好的功能,您可以点击空格键并捕获一个窗口,如下所示:

在此处输入图像描述

我想以编程方式查看图像目录(它们是 PNG),确定它们是否有阴影,然后自动裁剪它。我需要它才能在 Mac 上运行。我想用 Python 写这个。有人告诉我Pillow是现在在 Python 中管理图像的正确方法,但我不确定如何读取单个像素和裁剪图像。