Каковы различные варианты использования PNG против GIF против JPEG против SVG?

pickle предназначен для сериализации некоторого объекта (или объектов) как одного байтового потока в файле.

shelve строит поверх pickle и реализует словарь сериализации, где объекты маринуются, но связан с ключом (некоторая строка), поэтому вы можете загрузить файл с отложенными данными и получить доступ к маринованным объектам с помощью ключей. Это было бы более удобно, если бы вы сериализовали множество объектов.

Вот пример использования между ними. (должен работать в последних версиях Python 2.7 и Python 3.x).

pickle Пример

import pickle

integers = [1, 2, 3, 4, 5]

with open('pickle-example.p', 'wb') as pfile:
    pickle.dump(integers, pfile)

Это выведет список integers в двоичный файл, называемый pickle-example.p.

Теперь попробуйте прочитать маринованный файл назад.

import pickle

with open('pickle-example.p', 'rb') as pfile:
    integers = pickle.load(pfile)
    print integers

Вышеуказанное должно выводить [1, 2, 3, 4, 5].

shelve Пример

import shelve

integers = [1, 2, 3, 4, 5]

# If you're using Python 2.7, import contextlib and use
# the line:
# with contextlib.closing(shelve.open('shelf-example', 'c')) as shelf:
with shelve.open('shelf-example', 'c') as shelf:
    shelf['ints'] = integers

Обратите внимание, как вы добавляете объекты на полку через доступ к словарю.

Прочтите объект обратно с помощью кода, подобного следующему:

import shelve

# If you're using Python 2.7, import contextlib and use
# the line:
# with contextlib.closing(shelve.open('shelf-example', 'r')) as shelf:
with shelve.open('shelf-example', 'r') as shelf:
    for key in shelf.keys():
        print(repr(key), repr(shelf[key])))

Выход будет 'ints', [1, 2, 3, 4, 5].

560
задан TylerH 3 January 2019 в 23:14
поделиться

8 ответов

JPEG не самый легкий для всех типов изображений (или даже для большинства). Углы, прямые линии и простые «заливки» (блоки сплошного цвета) будут выглядеть размытыми или содержать артефакты в зависимости от уровня сжатия. Это формат с потерями, и он лучше всего подходит для фотографий, на которых нельзя четко увидеть артефакты. Прямые линии (например, в рисунках, комиксах и т. Д.) Очень хорошо сжимаются в PNG и без потерь. GIF следует использовать только тогда, когда вы хотите, чтобы прозрачность работала в IE6 или вам нужна анимация. GIF поддерживает только 256-цветную палитру, но также без потерь.

По сути, вот способ определить формат изображения:

  • GIF, если нужна анимация или прозрачность, которая работает в IE6 (обратите внимание, прозрачность PNG работает после IE6)
  • JPEG, если изображение является фотографией.
  • PNG, если прямые линии, как в комиксе или другом рисунке, или если требуется широкий диапазон цветов с прозрачностью (а IE6 не является фактором)

И, как указано в комментариях, если вы не уверены, что подойдет, попробуйте каждый формат с разными степенями сжатия, взвесьте качество и размер изображения и выберите, какой из них вы считаете лучшим. Я лишь даю практические правила.

47
ответ дан 22 November 2019 в 22:11
поделиться

Основное отличие заключается в том, что GIF запатентован и поддерживается немного шире. PNG является открытой спецификацией, и альфа-прозрачность не поддерживается в IE6. Поддержка была улучшена в IE7, но полностью не исправлена.

Что касается размеров файлов, GIF по умолчанию имеет меньшую цветовую палитру, поэтому на первый взгляд они обычно имеют меньший размер. Файлы PNG имеют более крупную палитру по умолчанию, однако вы можете уменьшить их цветовую палитру, чтобы в этом случае размер файла был меньше, чем у GIF. Проблема снова в том, что эта функция не поддерживается в Internet Explorer.

Кроме того, поскольку PNG могут поддерживать альфа-прозрачность, это единственный вариант, если вам нужен вариант прозрачности, отличный от двоичной.

1
ответ дан 22 November 2019 в 22:11
поделиться

GIF имеет 8-битную (256 цветов) палитру, а PNG - до 24-битную цветовую палитру. Итак, PNG может поддерживать больше цветов и, конечно, алгоритм поддерживает сжатие

0
ответ дан 22 November 2019 в 22:11
поделиться

GIF ограничен 256 цветами и не поддерживает реальную прозрачность. Вы должны использовать PNG вместо GIF, потому что он предлагает лучшее сжатие и функции. PNG отлично подходит для небольших и простых изображений, таких как логотипы, значки и т. Д.

JPEG имеет лучшее сжатие для сложных изображений, таких как фотографии.

5
ответ дан 22 November 2019 в 22:11
поделиться

JPEG будет иметь плохое качество в районе острых краев и т.д., и по этой причине он не подходит для большинства веб-графики. Он лучше подходит для фотографий.

По сравнению с GIF, PNG обеспечивает лучшее сжатие, большую палитру и больше возможностей, включая прозрачность. Кроме того, он не имеет потерь.

5
ответ дан 22 November 2019 в 22:11
поделиться

GIF основан на палитре из 256 цветов на изображение (по крайней мере, в своем базовом воплощении). PNG может делать "TrueColour", т.е. 16,7 миллионов цветов. PNG без потерь сжимается лучше, чем GIF без потерь. GIF может делать "бинарную" прозрачность (0% непрозрачности или 100% непрозрачности). PNG может работать с альфа-прозрачностью.

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

3
ответ дан 22 November 2019 в 22:11
поделиться

Я обычно использую PNG, так как у него есть несколько преимуществ перед GIF. Раньше на GIF существовали патентные ограничения, но срок их действия истек.

GIF-файлы подходят для рисования линий с острыми краями (например, логотипов) с ограниченным количеством цветов. Это позволяет использовать сжатие формата без потерь, которое способствует плоским областям однородного цвета с четко определенными краями (в отличие от JPEG, который поддерживает плавные градиенты и более мягкие изображения).

GIF-файлы можно использовать для небольших анимаций и видеороликов с низким разрешением.

Ввиду общего ограничения палитры изображений GIF до 256 цветов, он обычно не используется в качестве формата для цифровой фотографии. Цифровые фотографы используют форматы файлов изображений, способные воспроизводить более широкий диапазон цветов, такие как TIFF, RAW или JPEG с потерями, который больше подходит для сжатия фотографий.

Формат PNG является популярной альтернативой изображениям в формате GIF, поскольку в нем используются лучшие методы сжатия и нет ограничения в 256 цветов, но PNG не поддерживает анимацию. Форматы MNG и APNG, оба производные от PNG, поддерживают анимацию, но широко не используются.

7
ответ дан 22 November 2019 в 22:11
поделиться

png имеет более широкую цветовую палитру, чем gif, и gif является правильным, а png - нет. gif может делать анимацию, чего не может обычный png. png-прозрачность поддерживается только браузером, более поздним, чем IE6, но для этой проблемы есть исправление Javascript. Оба поддерживают альфа-прозрачность. В общем, я бы сказал, что вам следует использовать png для большинства веб-графики, а jpeg - для фотографий, снимков экрана и т. Д., Потому что сжатие png не очень хорошо работает с этим.

3
ответ дан 22 November 2019 в 22:11
поделиться
Другие вопросы по тегам:

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