如何在不使用 Pillow 的情况下调整 Python 中的图像大小

How to resize an image in Python without using Pillow

我的 Django 站点托管在 Azure 上。

它允许用户上传照片。我需要一种方法让系统调整大小,并可能旋转照片。

看起来很简单,我尝试使用 Pillow 库,但虽然它在本地工作,但由于多种原因它不会部署到 Azure。如果需要,我可以具体说明,但这有据可查

我什至尝试构建一个 Pillow 轮子并进行部署,但 Azure 拒绝加载它,说它是错误的平台(即使我匹配了 Python 2.7 版本 - 和 32 位)。我也尝试上传 64 位版本,但没有任何效果。所以在这一点上,我只想把 Pillow 留在我身后,并在没有 Pillow 的 Python 中寻求另一种方法来实现这一点。还有其他方法吗?

我尝试过的事情的笔记:

1) 以正常方式安装 Pillow 会出现这条熟悉的错误消息:
ValueError: zlib is required unless explicitly disabled using --disable-zlib, aborting

2) 然后我创建了一个轮子:pip wheel Pillow --wheel-dir=requirements

然而,这会在 pip.log 中产生以下错误:
Pillow-3.4.2-cp27-cp27m-win32.whl is not a supported wheel on this platform. Pillow-4.1.1-cp27-cp27m-win32.whl is not a supported wheel on this platform.
我确定我在 32 位平台上运行 Python 2.7,所以不确定为什么会抱怨。

关于在 Azure 平台上安装 Pillow,我帮不上什么忙。 但是我使用手动调整大小和其他东西的日子早已一去不复返了。 我使用 thumbor https://thumbor.org/ 已经有一段时间了。

只需设置一个相同的安全实例并使用它动态调整大小、裁剪和管理您的图像。

希望对您有所帮助

在浪费了几天之后,我发现了 Pillow 没有安装的原因。这不是因为轮子与平台不兼容,而是 pip 太旧了。

Azure 目前正在使用 pip 版本 1.5.6 - 他们真可耻。此版本不识别轮子。

以下是我解决此问题的方法: 转到 Kudu 调试控制台:
https://[site_name].scm.azurewebsites.net/DebugConsole

激活你的虚拟环境:
env\Scripts\activate

请注意,如果您 运行 pip --version 该版本号有多旧。 现在通过 运行ning 升级:
python -m pip install -U pip
请注意,您无法升级 D:\Python27 中的默认 pip,因为您无权访问它,但您可以在虚拟环境中升级本地 pip。 现在 运行 pip --version 以确保您 运行 正在使用最新版本(即 >=9.0.1)。

现在在 requirements.txt 中,您可以通过在顶部添加一行来告诉 pip 在特定文件夹中查找轮子,例如:
--find-links requirements(这意味着它将搜索需求文件夹)。
这是创建枕轮的方法。您可以在本地或在 Kudu 控制台上 运行。如果你 运行 它在本地确保你的 python 版本与你在 Azure 上使用的版本相匹配(2.7 或 3.X)并且默认情况下确保你使用 32 位版本。
pip install wheel(仅当您没有安装 wheel 时)
pip wheel Pillow --wheel-dir=requirements
这会将两个文件复制到您的需求文件夹中:Pillow-X.whl 和 olefile-X.whl。如果您通过 git 推送进行部署,请确保将这些添加到您的源代码管理中。将这些推送到服务器。

现在在 Kudu DebugConsole 中,您可以测试 .whl 文件是否存在(部署后)并通过 运行ning 测试安装: pip install --no-index -r requirements.txt
现在应该可以运行并安装 Pillow!

部署时请密切注意它是否显示 Found compatible virtual environment.Creating python 2-7 virtual environment.。前者是你想要的。但是,如果您看到后者,则表示部署已破坏您的 env 文件夹并将您重置回 pip 1.5.6。我不知道为什么它有时会这样做,但尝试在部署后对 env 文件夹进行尽可能少的更改(即只升级 pip 就是这样)以避免这种情况。

还有另一个 SO 线程 ,它具有与在 Azure 上安装 Pillow 类似的问题。我认为我对此的回答有助于解决您的问题。对我的解决方案有任何疑问,请随时告诉我。