1

我已经编写了代码来压缩 .py 文件中的图像,并尝试使用 transcrypt 进行编译以转换为 JS 文件。在此过程中,我收到以下错误(屏幕截图)但是如果我使用 IDE 单独运行 .py 文件,它可以正常工作并压缩图像。

代码:

import PIL   
from PIL import Image as pil

class FileUpload:

    def Images (self,arg):
    # Open the image
            im = pil.open(arg)
    # Now save it
            im.save("img_compressed.jpg", format="JPEG", quality=90)

fileupload = FileUpload()

错误 :

\python src\imgcompress>python -m transcrypt -b -m -n imageCompress.py

Transcrypt (TM) Python to JavaScript Small Sane Subset Transpiler Version 3.6.101
Copyright (C) Geatec Engineering. License: Apache 2.0


Error while compiling (offending file last):
        File '/python src/imgcompress/imageCompress.py', line 1, at import of:
        File '/python/lib/site-packages/PIL/__init__.py', line 14, namely:

        Can't import module 'PIL'

Aborted

截屏

4

2 回答 2

2

例如下面的 JS 库适合在上传之前压缩图片:

https://github.com/brunobar79/JIC

任何 JS 库都可以直接从 Transcrypt 中使用,因此有很多选择。要点是:寻找 JS 而不是 Python lib。只是谷歌

javascript图像压缩浏览器

Transcrypt 被故意设计为存在于 JS 生态系统中。

http://www.transcrypt.org/docs/html/what_why.html#the-ecosystem-different-batteries

要在完全不使用库的情况下进行压缩,请参见例如

如何在浏览器中通过 Javascript 压缩图像?

请注意,您可以嵌入任何未经修改的 JS 代码:

http://www.transcrypt.org/docs/html/special_facilities.html#inserting-literal-javascript-pragma-js-and-include

但这很少需要,您可以直接从 Transcrypt 使用上面的技巧,只需转换为 Python 语法。所有 DOM 函数都可用。

于 2018-04-07T06:48:17.560 回答
1

Transcrypt 不能使用 C 扩展库,只能使用纯 Python 库。这就是为什么他们将 Numpy API 的一部分重新实现为 Numscrypt 而不仅仅是使用 Numpy。

有一些纯 Python 库具有与 Pillow 类似的功能,例如pymaging,但我不知道它们中的任何一个是否具有您需要的功能、速度或健壮性;您必须自己尝试一下。

如果你不在浏览器中运行它,它也可以使用 Node.js 包,并且有用于处理图像文件的 Node 包。我怀疑它们中的任何一个都将是 Pillow 的确切替代品,但如果您只想要基本功能,编写try/应该很容易except导入任何可用的并定义几个包装器。

如果您在浏览器运行……好吧,那么您就无法访问文件系统,这就排除了很多 PIL 功能……但另一方面,您已经从 DOM 获得了本机图像对象。

于 2018-04-07T05:42:44.010 回答