我编写了代码来压缩.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
答案 0 :(得分:2)
以下JS库适用于在上传之前压缩图像:
https://github.com/brunobar79/J-I-C
任何JS库都可以直接在Transcrypt中使用,因此有很多选择。重点是:寻找JS而不是Python lib。只是Google for
javascript图像压缩浏览器
有意将Transcrypt置于JS生态系统中。
http://www.transcrypt.org/docs/html/what_why.html#the-ecosystem-different-batteries
要在不使用库的情况下进行压缩,请参阅例如
How to compress an image via Javascript in the browser?
请注意,您可以使用以下代码嵌入任何未经修改的JS代码:
但这很少是必要的,您可以直接从Transcrypt使用上面的技巧,只需转换为Python语法。所有DOM功能都可用。
答案 1 :(得分:1)
Transcrypt不能使用C扩展库,只能使用纯Python库。这就是为什么他们将Numpy API的一部分重新实现为Numscrypt而不仅仅是使用Numpy。
有一些纯Python库与Pillow具有相似的功能,如pymaging,但我不知道它们中是否有任何你需要的功能,速度或稳健性;你必须自己试试。
如果您没有在浏览器中运行它,它也可以使用Node.js包,还有用于处理图像文件的Node包。我怀疑它们中的任何一个都是Pillow的完全替代品,但是如果你只想要基本的功能,那么编写一个try
/ except
来导入任何可用的和定义的应该很容易几个包装纸。
如果 在浏览器中运行......那么,您就无法访问文件系统,这会排除很多PIL功能......但另一方面,你已经从DOM中获得了原生图像对象。