Python - Не могу импортировать модуль 'PIL'

Я написал код для сжатия изображения в файле.py и попытался скомпилировать с использованием transcrypt для преобразования в файл JS. Во время этого процесса я получил следующую ошибку (снимок экрана). Но если я запускаю файл.py отдельно с помощью IDE, он работает нормально и сжимает изображение.

Код:

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

Скриншот

2 ответа

Следующая библиотека JS, например, подходит для сжатия изображений перед загрузкой:

https://github.com/brunobar79/J-I-C

Любая библиотека JS может использоваться напрямую из Transcrypt, поэтому существует множество альтернатив. Главное: ищите JS, а не Python. Просто Google для

браузер сжатия изображений javascript

Transcrypt был преднамеренно создан, чтобы жить в экосистеме JS.

http://www.transcrypt.org/docs/html/what_why.html

Чтобы сжать без использования библиотеки вообще, смотрите, например,

Как сжать изображение через Javascript в браузере?

Обратите внимание, что вы можете встроить любой код JS без изменений:

http://www.transcrypt.org/docs/html/special_facilities.html

но это редко необходимо, вы можете использовать вышеприведенный прием непосредственно из Transcrypt, просто конвертировать в синтаксис Python. Все функции DOM доступны.

Transcrypt не может использовать библиотеки расширений C, только библиотеки на чистом Python. Вот почему они переопределяют часть Numpy API как Numscrypt вместо того, чтобы просто использовать Numpy.

Есть некоторые библиотеки на чистом Python, которые имеют схожую с Pillow функциональность, например, pymaging, но я не знаю, обладает ли какая-либо из них нужной вам функциональностью, скоростью или надежностью; Вы должны попробовать их сами.

Если вы не запускаете его в браузере, он также может использовать пакеты Node.js, и есть пакеты Node для работы с файлами изображений. Я сомневаюсь, что любой из них будет точной заменой Подушки, но если вы просто хотите получить базовую функциональность, написать довольно легкоtry/exceptкоторый импортирует, какой бы ни был доступен, и определяет пару упаковщиков.

Если вы работаете в браузере... ну, тогда у вас нет доступа к файловой системе, которая исключает множество функциональных возможностей PIL, но с другой стороны, у вас есть собственные объекты изображений из DOM.

Другие вопросы по тегам