измените размеры изображения на сохранении

Хотя Python работает без файла __init__.py, вы все равно должны его включать.

Он указывает, что пакет следует рассматривать как модуль, поэтому включите его (даже если он пуст).

Существует также случай, когда вы действительно можете использовать файл __init__.py:

Представьте, что у вас была следующая файловая структура:

main_methods 
    |- methods.py

И methods.py содержал это:

def foo():
    return 'foo'

Чтобы использовать foo(), вам понадобится одно из следующих:

from main_methods.methods import foo # Call with foo()
from main_methods import methods # Call with methods.foo()
import main_methods.methods # Call with main_methods.methods.foo()

Возможно, вам нужно (или хотите ), чтобы сохранить methods.py внутри main_methods (например, время выполнения / зависимости), но вы хотите импортировать main_methods.


Если вы изменили имя methods.py на __init__.py то вы можете использовать foo(), просто импортировав main_methods:

import main_methods
print(main_methods.foo()) # Prints 'foo'

Это работает, потому что __init__.py рассматривается как часть пакета.


Некоторые Python пакеты действительно делают это. Например, JSON , где запуск import json фактически импортирует __init__.py из пакета json (, см. Структуру файла пакета здесь ):

Исходный код: Lib/json/__init__.py

blockquote>

15
задан 8 March 2009 в 16:35
поделиться

3 ответа

Необходимо использовать метод для обработки загруженного файла, как продемонстрировано в документация Django .

В этом методе, Вы могли связать блоки в переменной (вместо того, чтобы писать им в диск непосредственно), создать Изображение PIL из той переменной, изменить размеры изображения и сохранить его на диск.

В PIL, необходимо посмотреть Image.fromstring и Image.resize.

12
ответ дан 1 December 2019 в 00:08
поделиться

Я настоятельно рекомендую sorl-миниатюра приложение для обработки изображения, изменяющего размеры легко и прозрачно. Это входит в каждый проект Django, который я запускаю.

6
ответ дан 1 December 2019 в 00:08
поделиться

Я рекомендую использовать StdImageField от django-stdimage, он должен обработать всю грязную работу для Вас. Это просто в использовании, Вы просто определяете размеры измененного изображения в определении поля:

class MyModel(models.Model):
    image = StdImageField(upload_to='path/to/img',  size=(640, 480))

Выезд документы — это может сделать миниатюры также.

23
ответ дан 1 December 2019 в 00:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: