0

我在我的网络应用程序(Python Flask)上从用户那里获得扫描/拍摄的图像,这些图像又存储在 Azure Blob 中。我需要将所有图像概括为标准分辨率,同时减小文件大小。 我打算在这些图像上应用 OCR,因此保持图像质量也很重要。

在图像存储在 Azure Blob 之前,我需要在我的服务器(python 烧瓶)上执行此操作。我发现像picopt这样的库并没有直接解决这个问题。还有一些可用的脚本可以从控制台调用,但我每次都需要自动执行它们。

抱歉在这里太天真了,但任何人都可以提出解决方案,以便我可以在 python 烧瓶应用程序中执行此操作吗?

我正在阅读文件file = request.files['file']。我想在不保存的情况下对图像进行处理,因为我会将其存储在 Azure Blob 中。

目标

  • 单色图像(二值化)
  • 图像压缩
  • 保留纵横比
4

3 回答 3

0

枕头怎么样?它是一个通用的图像实用程序模块,特别是Image.resize你可以做你想做的事。

于 2016-01-07T18:16:59.400 回答
0

图像处理是复杂且通常耗时的操作。在您的请求处理程序中执行“可用脚本”或 Pillow(如@reptilicus 建议的那样)并不是一个好主意,因为它们会占用很长时间的资源并会限制您的应用程序性能。但是您可以设置一个Celery实例并在后台启动图像处理任务。图像处理任务完成后,您可以启动另一个任务将调整大小的图像上传到 Azure Blob。您将能够重试任务并做更多事情。类似的应用程序设置将提供稳健性和可扩展性。

于 2016-01-07T18:19:43.473 回答
0

在 Azure 上,处理图像的常用方法是结合使用 WebJob 和 Azure 存储队列。

您可以尝试先将上传的图片存入Azure Storage Queue,然后将WebJob作为后台任务从Storage Queue中取出图片进行一一处理,并将处理后的图片存入Azure Storage Blob。

作为参考,您可以查看文档Run Background tasks with WebJobsHow to use Queue storage from Python to know them。

希望能帮助到你。任何问题,请随时告诉我。

于 2016-01-21T03:56:55.187 回答