Изменение размера изображения в браузере, лучшее, чем наивысшее качество PIL

В моем случае у меня была перегрузка функции, которая вызывала это исключение, как только я изменил имя моей второй функции, она прошла нормально, угадайте, что веб-сервер не поддерживает перегрузку функции

2
задан Iulius Curt 20 March 2019 в 17:27
поделиться

2 ответа

В этой статье здесь [1] говорится, что дисплеи Retina (дисплеи с высоким разрешением) будут пытаться отображать в 2 раза больше пикселей в той же области. Площадь, которая также измеряется в пикселях, пикселях, которые вы фактически объявляете в CSS.

Так вот откуда пришло мое замешательство. Решением было создать миниатюры в два раза больше отображаемого размера.

0
ответ дан Iulius Curt 20 March 2019 в 17:27
поделиться

По моему опыту, PIL / Pillow (в дальнейшем просто «Pillow») может вести себя совсем иначе с маленькими изображениями, чем с большими - не только в операциях изменения размера, но и вообще - но так что вы могли бы также протестировать все методы, которые предлагает Pillow, например:

# q.v. https://gist.github.com/fish2000/d85befaf289c664b6a9f44d1b56e57da#file-asscat-py-L129-L134

from PIL import Image

# q.v. PIL.Image constants of the same (yet uppercased) names:
interpolation_methods = frozenset({
                          "box",
                          "bilinear", "bicubic",
                          "hamming", "lanczos",
                          "nearest" })

def interpol(name):
    """ Return a PIL/Pillow image interpolation method constant by name """
    return getattr(Image, name.upper())

size    = (26, 26)
avatar  = Image.open(…) # load your source avatar image
methods = (interpol(method) for method in interpolation_methods)
scaled  = (avatar.resize(size, resample=method) for method in methods)

# you can save these out for more granular inspection:
previews = list(scaled)
for preview in previews:
    preview.show()

… имейте в виду, что Image.NEAREST может дать удивительно приличные результаты для небольших размеров - это и тот факт, что Pillow никоим образом не является Adobe® Photoshop ™, и, таким образом, на самом деле не может быть поставлена ​​задача воспроизвести результаты, которые вы, возможно, получили из того же.

Но так, неважно, нужно ли масштабировать с помощью CSS (или любого другого метода на основе клиента): всегда лучше посылать меньше байт по сети, если это возможно, но это не значит, что это может не будет сделано. Лично я перфекционист, но если мне не хватает времени или денег, я не педантичен по этому поводу.

0
ответ дан fish2000 20 March 2019 в 17:27
поделиться
Другие вопросы по тегам:

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