Конвертировать Изображение В PNG Python
Конвертировать изображение в PNG на Python
Вам требуется программно преобразовать изображение изображение в PNG? С помощью программной библиотеки Aspose.Words for Python via .NET вы можете легко преобразовать изображение в PNG несколькими строками Python кода.
Современный Python API обработки документов создает PNG из изображение с высокой скоростью. Проверьте качество преобразования изображение в PNG прямо в браузере. Мощная библиотека для Python позволит вам конвертировать изображение во многие популярные форматы изображений.
Сохранить изображение как PNG на Python
В следующем примере показано, как конвертировать изображение в PNG изображение на Python.
Выполните несколько простых шагов, чтобы изображение PNG файл графический PNG формат. Прочитайте изображение с локального диска, затем сохраните его как PNG, указав требуемый формат изображения с помощью PNG расширения. Как для операции изображение чтения, так и записи PNG, вы можете использовать полностью определенные имена файлов. Выходное содержимое PNG будет идентично исходному изображение файлу.
Входной файл
Загрузить файл
Загрузите файл, который хотите конвертировать
Выполнить код
Формат вывода
DOCXPDFMDHTMLTXTDOCDOTDOCMDOTXDOTMRTFEPUBPSPCLMHTMLXHTMLODTOTTXPSPNGBMPEMFGIFSVGTIFFJPG
Выберите целевой формат из списка
import aspose.words as aw doc = aw.Document() builder = aw.DocumentBuilder(doc) shape = builder.insert_image("Input.png") shape.image_data.save("Output.png")
import aspose.words as aw
doc = aw.Document("Input.png")
doc.save("Output.png")
import aspose.words as aw
doc = aw.Document(Input.png)
for page in range(0, doc.page_count):
extractedPage = doc.extract_pages(page, 1)
extractedPage. save(f"Output_{page + 1}.png")
import aspose.words as aw
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.insert_image("Input.png")
doc.save("Output.png")
import aspose.words as aw
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
shape = builder.insert_image("Input.png")
shape.image_data.save("Output.png")
Выполнить код
Как конвертировать изображение в PNG
- Установите ‘Aspose.Words for Python via .NET’.
- Добавьте ссылку на библиотеку (импортируйте библиотеку) в свой Python проект.
- Откройте исходный изображение файл на Python.
- Вызовите метод ‘save()’, передав имя выходного файла с расширением ‘PNG’.
- Получите результат преобразования из изображение в PNG.
Python библиотека чтобы конвертировать изображение в PNG
Мы размещаем наши пакеты Python в репозиториях PyPi. Следуйте пошаговым инструкциям по установке «Aspose.Words for Python via .NET» в среду разработчика.
Системные Требования
Этот пакет совместим с Python 3.5, 3.6, 3.7, 3.8 и 3.9. Если вы разрабатываете программное обеспечение для Linux, ознакомьтесь с дополнительными требованиями для gcc и libpython в документации по продукту.
Вы можете конвертировать изображение во многие другие форматы:
Требования к отправке файлов PNG с прозрачным фоном в Adobe Stock
Узнайте больше о файлах PNG, о том, почему клиентам нужны файлы PNG с прозрачным фоном, а также о технических требованиях и шагах по их отправке в Adobe Stock. Еще несколько примеров для идей и вдохновения.
Все больше и больше покупателей акций ищут базовые ресурсы, которые быстро и четко передают главную идею. Например, им может понадобиться изображение изолированного объекта, такого как лампочка, для веб-страницы, изображение винтажной рамки для размещения в ней фотографии или геометрическая графика для использования в качестве наложения в видео.
Эти типы «полезных» ресурсов обычно используются в качестве компонентов более крупных проектов: они не предназначены для самостоятельного воплощения коммерческих концепций или передачи идей.
Чтобы удовлетворить растущий спрос на высококачественные служебные ресурсы, Adobe Stock теперь поддерживает файлы PNG с прозрачным фоном.
Мы стремимся быстро разработать коллекцию высококачественных изображений PNG в Adobe Stock, так что участники Adobe Stock узнают об обновлениях одними из первых и смогут добиться успеха в совершенно новой категории ресурсов.
Пока в Adobe Stock не будет определенного количества файлов PNG с прозрачным фоном, мы будем продавать их только как сжатые файлы JPEG с белым фоном. В будущем все прозрачные ресурсы будут доступны как в прозрачном формате PNG, так и в сжатом формате JPEG.
При загрузке файлов PNG на портал Contributor вам не нужно добавлять слово «прозрачный» к заголовкам, поскольку Adobe Stock автоматически определяет прозрачность и предоставляет клиентам фильтр для поиска прозрачных файлов PNG.
Вот несколько примеров.
Что такое файл PNG?
Файл Portable Network Graphics (PNG) представляет собой растровое изображение, сжатое без потери качества. Это означает, что файлы PNG сохраняют все свои исходные данные файла при сжатии, поэтому они содержат большое количество деталей изображения. Они также поддерживают такие характеристики, как непрозрачность и прозрачность.
Поскольку PNG-файлы могут иметь прозрачный фон, дизайнеры могут накладывать их на разные фоны, при этом фон будет просвечиваться. Поэтому формат PNG — это отличный выбор для вспомогательных ресурсов.
Примеры использования файлов PNG с прозрачным фоном
- Для веб-сайтов: фотореалистичные логотипы, аватары и объекты
- Для социальных сетей и макетов: изолированные объекты и элементы сцены
- Для искусства и коллажей: теневые и световые эффекты и наложения, а также креативные материалы и текстуры
- Для общих случаев использования: наложения, изолированные объекты, фоны, узоры, текстуры, баннеры, макеты, наборы фотографий, значки и логотипы, инфографика, макеты, наборы букв, наборы символов, наборы элементов и плоские макеты
Технические рекомендации и рекомендации по созданию и отправке файлов PNG
Основные характеристики
Файлы PNG, представленные на портале Adobe Stock Contributor, должны соответствовать характеристикам, описанным ниже.
Максимальный размер файла: 45 МБ.
Минимальное разрешение изображения: 4 МП
Максимальное разрешение изображения: 100 МП
Более подробное руководство по созданию и отправке фотографий, иллюстраций и векторов в Adobe Stock см. в нашей статье Требования к фотографиям и иллюстрациям и в наших рекомендациях по использованию векторных ресурсов.
Рекомендации
Вот некоторые основные правила и запреты, которые необходимо соблюдать при отправке файлов PNG:
Можно: загружать изображения с прозрачным фоном.
Можно: загружать ресурсы, которые представляют уникальную ценность для клиента.
Можно: обрезать изображения, чтобы минимизировать пустое пространство вокруг них.
Можно: изолировать отдельные объекты, элементы или людей.
Можно: удалять или сводить к минимуму тени.
Нельзя: отправлять одинаковые файлы, один в формате PNG и один в формате JPEG.
Нельзя: добавлять клетчатый или цветной фон, чтобы обозначить прозрачность.
Художники Adobe:
Пользовательская сцена | 509914127, Tartila | 512157229, Simon | 512158206, Пользовательская сцена | 509912273, Daria | 505785548, Управление искусством | 507489112
Вход в учетную запись
Войти
Управление учетной записью
Сжать изображения PNG онлайн
Загрузить файлы
Перетащите сюда свои файлы
Применительно к цифровым файлам сжатие — это действие по уменьшению размера одного файла за счет удаления битов информации. Иногда вы удаляете пустые или бесполезные биты информации, поэтому размер файла уменьшается, но он выглядит точно так же. Это называется сжатием без потерь.
С другой стороны, удаление битов, снижающих качество файла, называется сжатием с потерями.Инструмент на этой странице выполняет тип сжатия с потерями, уменьшая доступную цветовую палитру PNG.
Зачем вам сжимать PNG?
PNG идеально подходят для графики, логотипов и других простых элементов дизайна, поскольку они поддерживают прозрачность. Это позволяет размещать PNG поверх другого изображения и закрывать только определенные части изображения под ним. Это невозможно для многих других форматов изображений, включая JPG.
PNG поддерживают 24-битные или 8-битные цвета. Чем выше поддержка битов, тем больше доступных цветов для этого PNG — и тем больше размер файла. Если на вашем веб-сайте есть простой логотип в формате 24-битного PNG, этот файл занимает лишнее место и замедляет загрузку страницы. Преобразование этого изображения в 8-битную палитру уменьшит размер файла, не влияя на его видимое качество. Теперь у вас есть файл меньшего размера, занимающий меньше места в хранилище, и ваша страница будет загружаться немного быстрее.
Если на вашей странице много PNG-файлов, сжатие их до 8-битного может значительно повысить скорость вашего сайта.
Как сжать PNG?
Сжатие PNG невероятно просто с помощью нашего бесплатного онлайн-инструмента. Нет необходимости загружать программное обеспечение, нет необходимости регистрироваться и нет ограничений на количество сжатий, которые вы можете сделать.
Первое, что вам нужно сделать, это загрузить один или до 20 файлов PNG. Самый простой способ сделать это — просто перетащить изображения в поле «Перетащите сюда файлы». Однако, если вы используете мобильное устройство, вы также можете нажать кнопку «ЗАГРУЗИТЬ ФАЙЛЫ» и таким образом перейти к своим PNG.
После загрузки вы увидите миниатюры для ваших PNG в очереди. Наш сервер немедленно обработает их и определит подходящий коэффициент для качественного сжатия. Если вас устраивает выбор нашего сервера, вы можете просто скачать сжатые файлы, нажав кнопку «СКАЧАТЬ» под миниатюрами.
Если вы хотите вручную контролировать уровень сжатия, это тоже вариант. Коснитесь миниатюры одного из ваших изображений, чтобы запустить ручной режим. Перемещайте ползунок качества, пока не найдете идеальное соотношение сжатия и точности файла. Когда все будет готово, нажмите кнопку «ПРИМЕНИТЬ» и перейдите к следующему изображению.
Когда все будет готово, вы можете сэкономить время, нажав кнопку «СКАЧАТЬ ВСЕ». Это загружает ZIP-файл. Этот файл будет содержать все ваши сжатые PNG в одном удобном пакете.
Если вы готовы выполнить еще одно преобразование, нажмите кнопку «ОЧИСТИТЬ ОЧЕРЕДЬ» и запустите процесс заново. Помните, что вы можете создавать пакеты не более чем из 20 изображений, но вы можете загружать столько пакетов, сколько захотите.
Безопасно ли сжимать файлы PNG?
Наш компрессионный инструмент не только прост в использовании, но и абсолютно безопасен. Сервер, на котором работает инструмент, полностью автоматизирован, поэтому загруженные вами изображения никто не увидит. Кроме того, сервер автоматически удаляет все данные через 60 минут, поэтому все, что вы загружаете, будет удалено всего через час. Это обеспечивает конфиденциальность и безопасность ваших данных.
Кроме того, если вы недовольны результатом сжатия, у вас все еще будут исходные файлы. Затем вы можете снова загрузить мастер-файл и повторно сжать его. Вы можете делать это столько раз, сколько пожелаете.
Спецификация PNG: Обоснование
Спецификация PNG: ОбоснованиеREC-png.html
Рекомендация W3C
01 октября 1996 г.Предыдущая страница
Следующая страница
Содержание
(Это приложение не является частью официальной спецификации PNG.)
В этом приложении приводится обоснование некоторых проектных решений. в PNG. Многие из этих решений были предметом серьезного дебаты. Авторы свободно допускают, что другая группа могла бы сделать разные решения; однако мы считаем, что наш выбор оправдано и последовательно.
12.1. Почему новый формат файла?
Нужен ли миру еще один графический формат? Мы верим так. GIF больше нельзя использовать бесплатно, но нет другого широко используемого формата. может непосредственно заменить его, как более подробно обсуждается ниже. Мы мог бы использовать адаптацию существующего формата, например GIF с незапатентованной схемой сжатия. Но для этого потребуются новые код в любом случае; это было бы не намного проще реализовать, чем совершенно новый формат файла. (PNG предназначен для прост в реализации, за исключением сжатия двигатель, который был бы нужен в любом случае.) Мы чувствуем, что это отличная возможность разработать новый формат, который исправляет некоторые известные ограничения GIF.12.2. Почему эти особенности?
Функции, выбранные для PNG, предназначены для удовлетворения потребностей приложения, которые ранее использовали особые преимущества GIF. В частности, GIF хорошо адаптирован для онлайн-коммуникаций. из-за его потоковой передачи и возможности прогрессивного отображения. PNG разделяет эти атрибуты. Мы также устранили некоторые широко известные недостатки GIF. В частности, PNG поддерживает полноцветные изображения. Мы не знаем широко используемый формат изображения, который без потерь сжимает изображения в истинном цвете как эффективно, как это делает PNG. Мы надеемся, что PNG будет использовать полноцветные изображения более практичны и широко распространены.Для приложений желательна некоторая форма управления прозрачностью. в котором изображения отображаются на фоне или вместе с другие изображения. GIF предоставил простую спецификацию прозрачного цвета. для этой цели. PNG поддерживает полный альфа-канал, а также спецификации прозрачного цвета. Это обеспечивает высокую гибкость прозрачность и эффективность сжатия.
Устойчивость к ошибкам передачи была важным рассмотрение. Например, изображения, передаваемые через Интернет, часто ошибочно обрабатываются как текст, что приводит к повреждению файла. PNG разработан таким образом, чтобы такие ошибки могли быть обнаружены быстро и надежно.
PNG был специально разработан, чтобы не быть полностью зависит от одного метода сжатия. Хотя сжатие deflate/inflate упоминается в этом документ, PNG все еще существовал бы без него.
12.3. Почему не эти функции?
Некоторые функции были намеренно исключены из PNG. Эти варианты были сделаны для упрощения реализации PNG, обеспечения переносимости и взаимозаменяемость и сделать формат настолько простым и надежным, насколько возможно для пользователей. В частности:- Нет несжатого варианта PNG. Можно хранить несжатые данные, используя только несжатые блоки deflate (функция обычно используется, чтобы гарантировать, что deflate не делает несжимаемым данные значительно больше). Однако программное обеспечение PNG должно поддерживать полную сдувать/надувать; любое программное обеспечение, которое не совместимо с PNG стандарт. Две наиболее важные особенности PNG — переносимость и сжатие — являются абсолютными требованиями для онлайн-приложений, и пользователи требуют их. Неспособность поддерживать компромиссы полного сдувания/надувания обе эти цели.
- В PNG нет сжатия с потерями. Существующие форматы, такие как JFIF уже хорошо справляется со сжатием с потерями. Кроме того, доступные потери методы сжатия (например, JPEG) далеко не надежны — плохой выбор уровня качества может испортить изображение. Чтобы избежать пользователя путаницу и непреднамеренную потерю информации, мы считаем, что лучше всего строго разделяйте форматы с потерями и без потерь. Кроме того, сжатие с потерями сложен в реализации. Добавление поддержки JPEG в декодер PNG может увеличить его размер на порядок. Это бы безусловно, приведет к тому, что некоторые декодеры не будут поддерживать эту функцию, которая разрушит нашу цель взаимозаменяемости.
- Нет поддержки CMYK или других необычных цветовых пространств. Опять же, это во имя продвижения мобильности. CMYK, в в частности, слишком зависит от устройства, чтобы быть полезным в качестве портативного представление изображения.
- Не существует стандартного фрагмента для просмотра миниатюр изображений. В обсуждения с поставщиками программного обеспечения, которые используют эскизы в своих продуктов стало ясно, что большинство из них не будет использовать «стандартный» фрагмент миниатюры. Во-первых, у каждого продавца своя идея того, какими должны быть размеры и характеристики миниатюры быть. Кроме того, некоторые поставщики хранят эскизы в отдельных файлах. для размещения различных форматов изображений; они не перестанут это делать просто из-за фрагмента эскиза в одном новом формате. Собственный фрагменты, содержащие эскизы конкретных поставщиков, кажутся более практичнее, чем обычный формат миниатюр.
PNG также не поддерживает несколько изображений в одном файле. Это ограничение является отражением того факта, что многие приложения не нужно и не будет поддерживать несколько изображений в файле. В любом случае единичные изображения принципиально иной вид объекта из последовательностей изображений. Вместо того, чтобы давать ложные обещания взаимозаменяемость, мы провели четкое различие между форматы с одним и несколькими изображениями. PNG — это формат одиночного изображения. (Но см. Расширение нескольких изображений.)
12.4. Почему бы не использовать формат X?
Прежде чем принять решение, были рассмотрены многочисленные существующие форматы. для разработки PNG. Никто не мог удовлетворить требования, которые мы чувствовали были важны для ПНГ.GIF больше не подходит в качестве универсального стандарта из-за юридических запутанности. Хотя простая замена метода сжатия GIF избежать этой проблемы, GIF не поддерживает полноцветные изображения, альфа каналы или гамма-коррекция. У спецификации есть и более тонкие проблемы. Только небольшое подмножество GIF89spec на самом деле переносим через разнообразие реализаций, но нет кодификации наиболее переносная часть спец.
TIFF слишком сложен, чтобы соответствовать нашим целям простоты и взаимозаменяемость. Определение подмножества TIFF ответило бы на это возражение, но разочарует пользователей, делающих разумное предположение, что файл сохраненные в формате TIFF из их существующего программного обеспечения будут загружаться в программу поддерживая наш вариант TIFF. Кроме того, TIFF не предназначен для потоковой передачи. обработки, не имеет возможности для прогрессивного отображения и не в настоящее время обеспечивают любое хорошее, юридически необремененное, сжатие без потерь метод.
IFF также был предложен, но не подходит в деталях: доступно представления изображений слишком специфичны для машины или неадекватно сжатый. Общая структура фрагментов IFF является полезной концепцией. что PNG щедро заимствовал, но мы не пытались быть побитовая совместимость со структурой блоков IFF. Опять же это из-за подробные вопросы, в частности тот факт, что ФОРМЫ IFF не предназначены для быть серийно записываемым.
JPEG без потерь не подходит, так как не обеспечивает хранение индексированных цветных изображений. Кроме того, его истинный цвет без потерь сжатие часто хуже, чем PNG.
12.5. Порядок байтов
Был задан вопрос, почему PNG использует сетевой порядок байтов. Мы выбрали один порядок байтов и использовали его последовательно. Какой именно порядок не имеет большого значения, но сетевой порядок байтов имеет то преимущество, что подпрограммы для преобразования туда и обратно уже доступны на любом платформа, поддерживающая работу в сетях TCP/IP, включая для всех платформ ПК. Функции тривиальны и будут включены в эталонной реализации.12.6. Переплетение
Двухмерная схема чересстрочной развертки PNG более сложна. для реализации, чем построчное чередование GIF. Это также стоит немного больше в размере файла. Тем не менее, это дает начальное изображение в восемь раз быстрее, чем GIF (первый проход передает только 1/64 пикселей по сравнению с 1/8 для GIF). Хотя это исходное изображение является грубым, оно полезно во многих ситуациях. Например, если изображение представляет собой карту изображений World Wide Web, пользователь видел раньше, первого прохода PNG часто бывает достаточно, чтобы определить куда нажать. Схема PNG также выглядит лучше, чем GIF, потому что горизонтальное и вертикальное разрешение никогда не отличаются более чем на коэффициент из двух; это позволяет избежать странного «растянутого» вида при чересстрочной развертке GIF-файлы заполняются путем репликации строк сканирования. Предварительные результаты показать, что мелкий текст в чересстрочном изображении PNG обычно читается примерно в два раза быстрее, чем в эквивалентном GIF, т. е. после Пятый проход PNG или 25% данных изображения вместо GIF третий проход или 50%. Это снова связано с более сбалансированным увеличением PNG. в разрешении.12.7. Почему гамма?
Может показаться естественным стандартизировать хранение выборочных значений, которые линейно пропорциональны интенсивности света (то есть имеют гамму 1,0). Но на самом деле обычно изображения имеют гамму меньше 1. Для этого есть три веские причины:- По причинам, подробно описанным в руководстве по гамме, все видеокамеры применяют функцию «гамма-коррекции» интенсивности Информация. Это приводит к тому, что видеосигнал имеет гамму около 0,5 относительно интенсивности света в исходной сцене. Таким образом, изображения, полученные видеозахватом кадра, уже имеют гамму около 0,5.
- Человеческий глаз имеет нелинейный отклик на интенсивность, поэтому линейное кодирование образцов либо тратит коды образцов в ярких областях изображение или предоставляет слишком мало примеров кодов, чтобы избежать артефактов полос. в темных областях изображения или в обоих случаях. Не менее 12 бит на выборку необходимы, чтобы избежать видимых артефактов при линейном кодировании с диапазоном яркости изображения 100:1. Гамма изображения в диапазоне от 0,3 до 0,5 распределяет выборочные значения образом, который примерно соответствует реакции глаза, так что 8 бит/выборка достаточны, чтобы избежать артефактов, вызванных недостаточным точность выборки почти на всех изображениях. Это делает «гамма-кодирование» намного лучшим способом хранения цифровых изображений, чем более простое линейное кодирование.
- Многие изображения создаются на ПК или рабочих станциях без гаммы. аппаратная коррекция и никакое программное обеспечение, готовое обеспечить гамму коррекция же. В этих случаях изображения имели свои освещение и цвет выбраны так, чтобы лучше всего смотреться на этой платформе — они можно рассматривать как встроенную «ручную» гамма-коррекцию. Чтобы увидеть, что задумал автор изображения, необходимо рассматривать такие изображения как имеющие file_gamma значение в диапазоне 0,4-0,6, в зависимости от освещения помещения Уровень, на котором работал автор.
На практике значения гаммы изображения около 1,0 и около 0,5 являются оптимальными. широко встречается. Старые стандарты изображений, такие как GIF, часто не учитывают за этот факт. Стандарт JFIF указывает, что изображения в этом формате следует использовать линейные выборки, но многие изображения JFIF, найденные в Интернете на самом деле гамма где-то около 0,4 или 0,5. разнообразие найденных изображений и разнообразие систем, которые люди отображают их включения привели к широко распространенным проблемам с отображением изображений «слишком темный» или «слишком светлый».
PNG ожидает, что зрители компенсируют гамму изображения в то время, когда изображение отображается. Другой возможный подход состоит в том, чтобы ожидать, что кодировщики для преобразования всех изображений в единую гамму во время кодирования. В то время как это метод немного ускорит просмотр, у него есть принципиальные недостатки:
- Гамма-коррекция по своей природе имеет потери из-за ошибок квантования и округления. Таким образом, требование преобразования во время кодирования приводит к необратимым потеря. Поскольку PNG предназначен для хранения данных без потерь, это нежелательно; мы должны хранить немодифицированные исходные данные.
- Кодер может не знать значение исходной гаммы. Если декодер делает гамма-коррекцию во время просмотра, может регулировать гамму (изменение отображаемой яркости) в ответ на обратную связь от человеческий пользователь. У энкодера нет такой возможности.
- На какой бы «стандартной» гамме мы ни остановились, она будет неправильной для некоторые дисплеи. Следовательно, зрителям все равно потребуется гамма-коррекция. способность.
См. Учебное пособие по гамме для получения дополнительной информации.
12.
8. Альфа без предварительного умножения PNG использует «несвязанный» или «не предварительно умноженный» альфа-канал, так что изображения с отдельными масками прозрачности могут храниться без потерь. Другой распространенный метод, «предварительное умножение альфа-канала», сохраняет значения пикселей. предварительно умноженный на альфа-фракцию; по сути, изображение уже композицию на черном фоне. Любые данные изображения, скрытые маска прозрачности при этом безвозвратно теряется, т.к. умножение на нулевое значение альфа всегда дает ноль.Некоторые методы рендеринга изображений генерируют изображения с предварительным умножением. альфа (значение альфа фактически показывает, какая часть пикселя закрыто изображением). Это представление можно преобразовать в PNG с помощью деление выборочных значений на альфа, за исключением случаев, когда альфа равна нулю. результат будет выглядеть хорошо, если он отображается программой просмотра, которая обрабатывает альфа-канал. должным образом, но будет выглядеть не очень хорошо, если зритель проигнорирует альфа-канал. канал.
Хотя каждая форма альфа-хранилища имеет свои преимущества, мы не требуется, чтобы все средства просмотра PNG обрабатывали обе формы. Мы стандартизировали на альфа без предварительного умножения как на без потерь и более общий случай.
12.9. Фильтрация
PNG включает в себя возможность фильтрации, поскольку фильтрация может значительно уменьшить сжатый размер полноцветных изображений и изображений в градациях серого. Фильтрация также иногда полезна для изображений с индексированными цветами, хотя это менее распространено.Алгоритмы фильтрации определены для работы с байтами, а не с пиксели; это обеспечивает простоту и скорость с очень небольшими затратами в производительность сжатия. Тесты показали, что фильтрация обычно неэффективен для изображений с менее чем 8 битами на выборку, поэтому обеспечение попиксельной фильтрации для таких изображений было бы бессмысленным. Для 16-битных данных побайтовая фильтрация почти так же эффективна, как попиксельная фильтрация, поскольку MSB прогнозируются из соседних MSB, и LSB прогнозируются из соседних LSB.
Кодеру разрешено менять фильтры для каждой новой строки развертки. Это не создает дополнительных сложностей для декодеров, поскольку декодер в любом случае требуется содержать логику дефильтрации для каждого типа фильтра. Единственная стоимость — это дополнительный байт на строку сканирования при предварительном сжатии. поток данных. Наши тесты показали, что при выборе одного и того же фильтра для всех строк развертки этот лишний байт сжимается почти до нуля, поэтому затраты на хранение невелики по сравнению с указанным фиксированным фильтром для всего изображения. И потенциальные преимущества адаптивной фильтрации слишком велики, чтобы их игнорировать. Даже с упрощенным выбором фильтра эвристика, обнаруженная на данный момент, адаптивная фильтрация обычно превосходит фиксированные фильтры. В частности, адаптивный фильтр может изменить поведение для последовательных проходов чересстрочного изображения; фиксированный фильтр не может.
12.10. Текстовые строки
Большинство форматов графических файлов включают возможность хранения некоторых текстовых информацию вместе с изображением. Но многим приложениям нужно больше чем это: они хотят иметь возможность хранить несколько идентифицируемых частей текста. Например, база данных, использующая файлы PNG для хранения медицинских Рентгеновские снимки, скорее всего, захотят включить имя пациента, имя врача, и т. д. Простым способом сделать это в PNG было бы изобрести новый частные блоки, содержащие текст. Недостаток такого подхода заключается в том, что другие приложения не будут знать, что находится в этих куски, и просто проигнорировал бы их. Вместо этого мы рекомендуем текстовое информация должна храниться в стандартных фрагментах текста с подходящими ключевые слова. Использование tEXt сообщает любому просмотрщику PNG, что фрагмент содержит текст, который может быть интересен пользователю-человеку. Таким образом, человек просмотр файла с помощью другого средства просмотра по-прежнему сможет увидеть текст, и даже понять, что это такое, если ключевые слова разумно самоочевидно. (Для этого мы рекомендуем использовать ключевые слова, не аббревиатуры, которые будет трудно понять человеку. Экономия нескольких байтов на ключевом слове — это ложная экономия.)В качестве компромисса был выбран набор символов ISO 8859-1 (Latin-1). между функциональностью и портативностью. Некоторые платформы не могут отображать что-либо большее, чем 7-битные символы ASCII, в то время как другие может обрабатывать символы за пределами набора Latin-1. Мы чувствовали, что Latin-1 представляет широко полезный и достаточно переносимый набор символов. Latin-1 — это прямое подмножество наборов символов, обычно используемых в популярные платформы, такие как Microsoft Windows и X Windows. Оно может также можно обрабатывать в системах Macintosh с помощью простого переназначения символы.
В настоящее время не предусмотрен текст, использующий символы наборы отличные от Latin-1. Мы признать, что потребность в других наборах символов возрастет. Однако PNG уже требует, чтобы программисты реализовали количество новых и незнакомых функций и текстовое представление не является основной целью PNG. Так как PNG предусматривает создание и публичная регистрация новых вспомогательных фрагментов, представляющих общий интерес, мы ожидаем, что фрагменты текста для других наборов символов, например как Unicode, в конечном итоге будет зарегистрировано и будет постепенно увеличиваться в популярность.
12.11. Подпись файла PNG
Первые восемь байтов PNG-файла всегда содержат следующее: ценности:(десятичное) 137 80 78 71 13 10 26 10 (шестнадцатеричный) 89 50 4e 47 0d 0a 1a 0a (обозначение ASCII C) \211 P N G \r \n \032 \n
Эта подпись идентифицирует файл как файл PNG и обеспечивает немедленное обнаружение распространенных проблем с передачей файлов. Первые два байта различают файлы PNG в системах, которые ожидают первые два байта для уникальной идентификации типа файла. Первый байт выбрано как значение, отличное от ASCII, чтобы уменьшить вероятность того, что текстовый файл может быть неправильно распознан как файл PNG; также он ловит плохой файл передает этот чистый бит 7. Байты со второго по четвертый называют формат. Последовательность CR-LF отлавливает плохие передачи файлов, которые изменяют новую строку последовательности. Символ Control-Z останавливает отображение файла в MS-DOS. Окончательный перевод строки проверяет обратную трансляцию CR-LF. проблема.
Декодер может дополнительно проверить, что следующие восемь байтов содержат Заголовок фрагмента IHDR с правильной длиной фрагмента; это будет поймать плохие передачи, которые удаляют или изменяют нулевые (нулевые) байты.
Обратите внимание, что в подписи нет ни номера версии, ни в любом месте файла. Это сделано намеренно: механизм чанков обеспечивает лучший и более гибкий способ обработки расширений формата, т.к. объяснил в Соглашения об именах чанков.
12.12. Компоновка блоков
Дизайн фрагментов позволяет декодерам пропускать нераспознанные или неинтересные куски: просто необходимо пропустить соответствующее количество байт, как определено из поля длины. 931)-1 байт позволяет избежать возможных проблем для реализации, которые не могут удобно обрабатывать 4-байтовые беззнаковые значения. На практике куски обычно будут намного короче.Для каждого фрагмента предоставляется отдельный CRC для обнаружения плохо переданные изображения как можно быстрее. В частности, важные данные, такие как размеры изображения, могут быть проверены до использовался.
Длина фрагмента исключается из CRC, так что CRC может быть рассчитывается по мере создания данных; это позволяет избежать второго прохода данные в случаях, когда длина фрагмента неизвестна заранее. Исключение длины из CRC не создает любой дополнительный риск невозможности обнаружить повреждение файла, так как если длина неверна, проверка CRC завершится ошибкой: CRC будет вычисляться неправильный набор байтов, а затем быть проверенным на неправильное значение из файл.
12.13. Соглашения об именах блоков
Соглашения об именах фрагментов обеспечивают безопасное и гибкое расширение PNG. формат. Этот механизм намного лучше, чем номер версии формата, потому что он работает на основе функции за функцией, а не является общий показатель. Декодеры могут обрабатывать новые файлы тогда и только тогда, когда файлы не используют никаких неизвестных критических функций (на что указывает обнаружение неизвестные критические фрагменты). Неизвестные вспомогательные фрагменты можно безопасно игнорируется. Мы решили не указывать общий номер версии формата. потому что опыт показал, что номера версий форматов вредят портативность настолько, насколько они помогают. Номера версий, как правило, устанавливаются излишне высоким, что приводит к тому, что старые декодеры отклоняют файлы, они могли бы обработать (это было серьезной проблемой для нескольких спустя годы после GIF89вышла спецификация, например). Более того, частные расширения могут быть сделаны как критическими, так и вспомогательными, и стандартные декодеры должны реагировать соответствующим образом; общие номера версий не помогают для частных расширений.Гипотетический фрагмент для векторной графики был бы критическим фрагментом, поскольку, если их игнорировать, важные части предполагаемого изображения будут отсутствует. Кусок, содержащий координаты множества Мандельброта для фрактальное изображение будет вспомогательным, так как другие приложения могут отображать изображение, не понимая, что оно представляет. В общем, тип чанка должен быть сделан критическим только в том случае, если невозможно отобразить разумное представление предполагаемого изображения без интерпретации этого фрагмента.
Бит публичного/частного свойства гарантирует, что любой вновь определенный публичный имя типа чанка не может конфликтовать с проприетарными чанками, которые могут быть где-то используется. Однако это не защищает пользователей частных имена фрагментов из-за возможности того, что кто-то другой может использовать то же самое имя чанка для другой цели. Это хорошая идея поставить дополнительная идентифицирующая информация в начале данных для любого частный тип чанка.
При изменении файла PNG может потребоваться удаление некоторых вспомогательных фрагментов. изменены, чтобы отразить изменения в других фрагментах. Например, гистограмма Чанк необходимо изменить, если данные изображения изменяются. Если редактор файлов не распознает куски гистограммы, копируя их вслепую на новый выходной файл некорректен; такие куски должны быть удалены. бит свойства safe/unsafe позволяет помечать вспомогательные фрагменты соответственно.
Не все возможные сценарии модификации охватываются безопасным/небезопасным семантика. В частности, куски, которые зависят от общего файла содержимое не поддерживается. (Примером такого чанка является индекс расположения чанков IDAT в файле: добавление комментария чанк непреднамеренно нарушит индекс.) Определение таких чанков обескураженный. Если это абсолютно необходимо для конкретного приложения, такие фрагменты могут быть сделаны критическими фрагментами с последующей потерей переносимость на другие приложения. Как правило, вспомогательные фрагменты могут зависят от критических фрагментов, но не от других вспомогательных фрагментов. это ожидается, что взаимозависимая информация должна быть помещена в один кусок.
В некоторых ситуациях может оказаться неизбежным создание одного вспомогательного фрагмента. зависит от другого. Хотя биты свойства блока недостаточны для представления этого случая доступно простое решение: в зависимый фрагмент, запишите CRC зависимого фрагмента. Оно может затем определить, был ли этот фрагмент изменен каким-либо другим программа.
Та же техника может быть полезна и для других целей. Например, если программа полагается на то, что палитра находится в определенном порядке, она может сохранить частный фрагмент, содержащий CRC фрагмента PLTE. Если это значение совпадает при повторном считывании файла, то оно предоставляет высокая уверенность в том, что палитра не была подделана. Запись что нет необходимости помечать приватный чанк как небезопасный для копирования когда используется этот метод; таким образом, такой приватный чанк может выжить другое редактирование файла.
12.14. Палитра гистограмм
Зритель может быть не в состоянии предоставить столько цветов, сколько указано в палитра изображения. (Например, некоторые цвета могут быть зарезервированы оконная система.) Для достижения наилучших результатов в этой ситуации полезно иметь информацию о частоте, с которой каждая палитра действительно появляется индекс, чтобы выбрать лучшую палитру для сглаживание или удаление наименее используемых цветов. Поскольку изображения часто создан один раз и просмотрен много раз, есть смысл вычислить это информацию в энкодере, хотя это не является обязательным для кодировщик, чтобы обеспечить его.Другие форматы изображений обычно решают эту проблему, указывая что элементы палитры должны появляться в порядке частоты использования. Это худшее решение, потому что оно не дает зрителю почти столько же информации: зритель не может определить, какой ущерб будет сделано путем удаления последних нескольких цветов. И не отсортированный палитра дает достаточно информации, чтобы выбрать целевую палитру для сглаживание, в случае, если зрителю необходимо уменьшить количество цвета существенно. Гистограмма палитры предоставляет информацию необходимо выбрать такую целевую палитру, не проходя мимо данные изображения.