Преобразование изображений в PDF с помощью Python
Недавно мне понадобилось преобразовать несколько изображений в PDF-файлы, что привело меня к изучению конвертирования изображений. Присоединяйтесь, если вам интересно!
Содержание
- Растровые и векторные изображения
- Что такое пиксель
- Группы данных
- Пиксельная или битовая глубина
- Преобразование изображение в PDF
- Использование библиотеки Pillow
- Вывод
Растровые и векторные изображения
Во-первых, давайте разберемся, как изображения представлены в данных.
Растровые изображения состоят из пикселей. Пиксель — это наименьший квадрат в растровом изображении, содержащий информацию об изображении. Пиксель может включать цвет и непрозрачность. Чем больше пикселей на изображении, тем лучше качество. Изображения с низким количеством пикселей имеют более низкое разрешение и могут иметь неровные края. Они не могут быть увеличены без потери разрешения. Растровые изображения совместимы со многими устройствами или программными обеспечениями.
Примерами форматов растровых изображений являются JPEG, PNG, TIFF, GIF и BMP.
С другой стороны, векторные изображения состоят из кривых и траекторий, созданных математическими формулами. Благодаря этому они бесконечно масштабируются без потери какого-либо разрешения. Эти изображения обычно не поддерживаются многими устройствами и они часто привязаны к определенному программному обеспечению, такому как Adobe Illustrator.
Из-за того, что они состоят из математических формул, их размеры файлов обычно меньше, чем их растровые аналоги.
Примерами форматов векторных изображений являются SVG, AI (Adobe Illustrator) и EPS (Encapsulated PostScript).
В этой статье я решил сосредоточиться на растровых изображениях.
Что такое пиксель
Пиксель — это наименьшая единица растрового изображения, обычно небольшой квадрат. Размеры изображения обычно представляются в формате [width px x height px], основанном на количестве пикселей в осях x и y. 8 = 256 возможных вариаций в одном пикселе. Изображение JPEG с полосой RGB имеет 3×8 бит, по одному для каждой цветовой полосы.
Теперь, давайте создадим виртуальную среду для нашего проекта:
python3 -m venv image_tutorial source venv/bin/activate
Я буду использовать это изображение Чарльза Делувио c с сервиса Unsplash:
Загрузите его и поместите в тот же каталог, где находится ваша виртуальная среда.
Преобразование изображение в PDF
Если все, что вы хотите — это преобразовать изображение в PDF без значительных изменений изображения, то «img2pdf» — это отличный и эффективный пакет, который делает это за вас с небольшим количеством кода.
Давайте сначала установим его в наше виртуальное окружение, а затем вернемся в оболочку Python:
pip install img2pdf
Во-первых, я определю размер страницы формата А4 [8,3 х 11,7 дюйма] с помощью некоторых включенных утилит калибровки:
import img2pdf a4_page_size = [img2pdf.in_to_pt(8.3), img2pdf.in_to_pt(11. 7)] layout_function = img2pdf.get_layout_fun(a4_page_size)
Наконец, создаю PDF-файл в памяти и записываю его в файл:
pdf = img2pdf.convert('insert image file name/path', layout_fun=layout_function) with open('A4_dog.pdf', 'wb') as f: f.write(pdf)
Довольно просто, правда?!
Однако результирующий файл довольно большой, это потому, что наше входное изображение было большим. В следующем разделе мы будем использовать Pillow, чтобы уменьшить размер файла, а затем создать PDF-файл.
Использование библиотеки Pillow
Pillow — это популярная и мощная библиотека обработки изображений Python. Я буду использовать её для обработки, а затем для преобразования изображения в PDF.
Во-первых, установите Pillow в нашу виртуальную среду:
pip install Pillow
Давайте откроем оболочку Python и посмотрим, что мы можем узнать о нашем изображении. Введите следующие команды:
from PIL import Image dog_jpg = Image.open('insert image path here')
Это загрузит наше изображение в память и создаст его экземпляр. Также мы можем узнать некоторые полезные сведения об этом изображении:
dog_jpg.format # returns the image format # output: 'JPEG' dog_jpg.size # returns the size of the image as (x pixels, y pixels) # output: (3487, 5230) dog_jpg.mode # returns the image bands # output: 'RGB' dog_jpg.show() # opens the image in your default viewer
Наше изображение довольно большое — [3 МБ]. Но мы можем уменьшить размер файла двумя способами:
- Уменьшить количество пикселей.
- Ещё больше сжать изображение.
Оба метода уменьшат качество файла и, следовательно, его размер. Я считаю, что сочетание обоих методов дает наилучшие результаты.
Давайте уменьшим количество пикселей, и снизим качество до 85%. Сжатие доступно не для всех форматов изображений, обратитесь к документации для получения информации о том, что возможно для каждого формата.
Я хочу чтобы наш файл помещался на странице формата А4 [8,3 х 11,7 дюйма] с разрешением 200 пикселей на дюйм (PPI или DPI). Давайте определимся с количеством пикселей, которое должна содержать вся страница:
page_size = [int(8.3 * 200), int(11.7 * 200)] page_size # output: [1660, 2340]
Наше изображение, конечно, слишком велико, чтобы поместиться на странице с таким разрешением. Нам нужно изменить его размер, чтобы убедиться, что он подходит.
target_width, target_height = page_size current_width, current_height = dog_jpg.size scale = max(current_width /target_width, current_height/target_height)
Я устанавливаю масштаб больший из масштабного коэффициента ширины или высоты, чтобы гарантировать, что изображение, безусловно, будет соответствовать обоим размерам страницы.
Разделите оба размера изображения собаки на шкалу, чтобы получить окончательный размер. Мы округляем его в меньшую сторону, потому что значения размера должны быть целыми числами:
final_image_size = [round(current_width / scale), round(current_height / scale)] final_image_size # output: [1560, 2340]
Измените размер изображения до его новых размеров. Я пересчитываю изображение с помощью фильтра под названием «LANCZOS», который дает лучшее качество, но работает медленно. Поскольку мы обрабатываем только одно изображение, это не должно быть проблемой. Подробнее о фильтрах вы можете прочитать здесь.
Это приведет к созданию новой измененной копии «dog_jpg» с исходным экземпляром, оставшимся неизменным:
resized_image = dog_jpg.resize(size=final_image_size, resample=Image.LANCZOS) resized_image.size # output: (1560, 2340)
В этот момент наше изображение может поместиться на странице формата А4. Однако на оставшейся странице будет 100 пикселей по ширине. Нам нужно заполнить пространство так, чтобы наше изображение точно соответствовало странице формата А4.
Для этого я создам новое изображение, которое будет полностью белым с размерами страницы формата А4, а затем вставлю поверх него изображение нашей собаки:
canvas_image = Image.new(mode='RGB', size=page_size, color='white') canvas_image.show()
Этот код должен открыть пустое белое изображение размером со страницу формата А4 с разрешением 200 PPI.
Я хочу, чтобы изображение было центрировано на странице, поэтому я помещу 50px пробелов с обеих сторон изображения.
Pillow использует систему координат для отображения изображений сверху слева. Например, [220, 0] относится к 220px
Я хочу вставить наше изображение вдоль верхнего края 50px справа от верхнего левого угла холста. Это переводится в положение [50, 0].
Обратите внимание, что функция вставки изменяет вставляемое изображение. Сделайте копию изображения (canvas_image в нашем случае), если это нежелательно:
canvas_image.paste(resized_image, box=(50,0)) canvas_image.show()
Давайте сначала сохраним это изображение в формате JPEG, а затем преобразуем его в PDF. Аргумент качества ниже относится к степени сжатия, применяемой к изображению. Документацию JPEG writer можно посмотреть здесь вместе с другими доступными writers:
canvas_image. save('A4_dog_image.jpeg', format='JPEG', quality=85, optimize=True)
Данное написание кода сохранит новый образ в том же каталоге, что и виртуальное окружение, которое мы создали ранее. Изображение должно выглядеть так:
Исходное изображение имело размер [3 МБ], а окончательное — около [533 КБ], и оно все еще пригодно для использования.
Наконец, давайте преобразуем это изображение в PDF. Аргумент качества ниже в контексте записи PDF относится к разрешению результирующего PDF в DPI/PPI. Я передаю значение 200, которое мы использовали для масштабирования изображений с самого начала:
canvas_image.save('A4_dog.pdf', format='PDF', quality=200)
И мы закончили! Результирующий PDF-файл будет значительно меньше, чем исходный, который я сгенерировал, потому что я уменьшил масштаб и сжал изображение.
Pillow — это мощная библиотека, которая поддерживает чтение, обработку и запись во многие другие форматы файлов как растровых, так и векторных изображений. Ознакомьтесь с документацией по форматам файлов. Я рассказал только частичку того, что может сделать Pillow.
Вывод
Эти решения не являются взаимоисключающими, вы можете использовать Pillow для обработки изображений, а затем использовать img2pdf для создания PDF-файлов.
Оба этих пакета также позволяют создавать многостраничные PDF-файлы из нескольких изображений. Прочтите соответствующие страницы документации, чтобы узнать, как это сделать. Однако ваша работа будет следовать аналогичному процессу, что мы сделали здесь.
Желаю удачи с конвертированием изображений!
Конвертируйте JPG в PDF онлайн с помощью бесплатного конвертера JPEG в PDF
Не знаете, как преобразовать изображения в документы? Наш конвертер JPG в PDF позволяет легко создавать PDF-файлы из файлов JPG. Бесплатно конвертируйте изображения в PDF и наслаждайтесь преимуществами этого универсального и широко используемого формата файлов.
Ваш файл будет загружен в облачное хранилище PandaDoc. Используя эту услугу, вы соглашаетесь с тем, что Условия использования и Уведомление о конфиденциальности будут регулировать использование получаемых вами услуг и персональных данных, которые вы предоставляете соответственно.
Как конвертировать JPG в PDF онлайн?
1. Загрузите изображение
Запустите инструмент и выберите изображения, которые вы хотите преобразовать, с вашего компьютера или локального диска. Вы также можете перетащить файлы в наш инструмент преобразования для дальнейшего удобства.
2. Переставьте изображения
Измените порядок изображений, перетаскивая их в нужном вам порядке с помощью нашего визуального редактора. Инструмент автоматически сохраняет ориентацию, поэтому вам не нужно беспокоиться о форматировании файлов JPG в соответствии со страницей.
3. Загрузите PDF-файл
Инструмент объединит несколько файлов JPG в один документ PDF, который будет загружен на ваш компьютер. Мы удаляем все файлы с нашего сервера после того, как вы загрузите документ для максимальной безопасности.
Конвертируйте JPEG в PDF онлайн и больше никогда не беспокойтесь о преобразовании изображений.
PDFplatform функции онлайн-конвертера JPG в PDF
Быстрое преобразование файлов позволяет быстро передавать файлы JPG клиентам и коллегам. Наш интуитивно понятный интерфейс позволяет легко преобразовать JPG в PDF в несколько кликов. Воспользуйтесь нашим онлайн-конвертером JPG в PDF уже сегодня.
Онлайн-приложение
Если у вас есть подключение к Интернету, вы можете конвертировать изображения в PDF онлайн в любом браузере. Преобразовывайте фотографии в PDF на ходу и наслаждайтесь более простым рабочим процессом.
Несколько форматов изображений
Будь то Paint в PDF или другие форматы, такие как GIF, BMP и PNG, конвертируйте изображения в PDF с легкостью. Наш конвертер позволит вам создавать PDF-файлы онлайн без потери качества.
Безопасные и надежные PDF-файлы
Наш конвертер безопасен и надежен. Мы серьезно относимся к вашей безопасности, поэтому мы удаляем все ваши файлы с наших серверов, как только вы загружаете их на свой компьютер.
Простота использования
Интуитивно понятный интерфейс с функцией перетаскивания позволяет легко конвертировать файлы всего за несколько кликов.
Воспользуйтесь нашим простым и интуитивно понятным инструментом для преобразования JPEG в PDF онлайн и наслаждайтесь эффективностью и действенностью документа.
Ищете не только PDF-инструменты?
Присоединяйтесь к более чем 40 000 команд, которые уже используют электронные подписи и ускоряют свои рабочие процессы с документами с помощью PandaDoc
Объединение и разделение файлов PDF
Compress PDF
Convert PDFs to WORD
Edit PDF documents
Most popular
Unlimited legally binding eSignatures
Unlimited document uploads
Payments
Mobile app
Все функции плана Free eSign плюс
Шаблоны
Редактор мультимедийных документов с перетаскиванием
Ценовые таблицы
Отчет о производительности и содержании пользователя
Аналитика документов
24/7 Инструменты по электронной почте и чату
.
Другие PDF EDTIC любую картинку с помощью нашего удобного инструмента. Передавайте изображения клиентам и коллегам в надежном, защищенном формате без потери качества.Объединение PDF
Наш мощный и простой в использовании инструмент объединения позволяет объединять файлы PDF в единый документ всего за пару кликов.
Сжать PDF
Большие файлы могут занимать много места и замедлять работу системы. Сжимайте PDF-файлы с помощью нашего мощного инструмента, чтобы уменьшить размер ваших документов без потери качества.
HEIC в PDF
Создание PDF-файлов из изображений никогда не было проще с нашим мощным и простым в использовании конвертером HEIC. Просто перетащите файлы HEIC в наш инструмент и мгновенно загрузите новые документы.
Подпись PDF
Завершите свои рабочие процессы с помощью нашего мощного инструмента подписи. Добавьте свою цифровую подпись к любому документу, чтобы подписать и защитить его.
PDF в Word
Иногда вам нужно отредактировать документы и добавить или удалить содержимое. С нашим конвертером вы можете легко преобразовать ваши документы в редактируемые форматы всего за несколько кликов.
Часто задаваемые вопросы
Описание — использование старых инструментов для работы с документами замедляет работу и усложняет работу.
Как преобразовать JPG в PDF в Windows?
Несколько онлайн-инструментов могут помочь, если вам интересно, как преобразовать JPEG в PDF в Windows. Наш бесплатный онлайн-конвертер JPEG в PDF также совместим с Windows, и вы можете использовать любой браузер, например Chrome, Firefox или Safari, чтобы начать преобразование изображений.
Как преобразовать JPG в PDF на моем телефоне?
Быстро и легко конвертируйте изображения на телефоне с помощью онлайн-инструмента. Наша платформа упрощает преобразование JPG в PDF на ходу и обеспечивает беспрепятственный и эффективный рабочий процесс. Просто загрузите свои изображения, расположите их в нужном порядке и нажмите «Применить и загрузить», чтобы получить новый документ.
Как бесплатно создать PDF-файл онлайн?
Быстрый поиск конвертера даст множество онлайн-инструментов, которые помогут вам быстро и легко создавать документы. Наша платформа предлагает множество функций, упрощающих процесс конвертации, включая поддержку нескольких форматов и интуитивно понятный интерфейс. Загрузите свои файлы на наш сайт и используйте наши мощные инструменты для создания документа в кратчайшие сроки!
JPG в PDF в App Store
JPG в PDF — это простой в использовании, интуитивно понятный и быстрый способ создания PDF из изображений. Он также поддерживает PDF в качестве входного исходного формата, который можно использовать для объединения нескольких файлов PDF или для объединения и экспорта файлов PDF вместе с изображениями. Поддерживаются различные типы форматов исходных изображений JPG, JPEG2000, PNG, PDF, BMP, TIFF, RAW и многие другие. Очень полезные настройки экспорта делают «JPG в PDF», полный конвертер изображений в PDF для iPhone, iPad и iPod.
* * * Преобразование JPG в PDF для Mac также доступно в Mac App Store. * * *
ХАРАКТЕРИСТИКИ:
• Создание PDF путем захвата фотографий и изображений из библиотеки фотографий. Позволяет создавать PDF из изображения и PDF-документ из облачного хранилища.
• Поддерживает форматы изображений, а также PDF в качестве источника ввода.
• Позволяет просмотреть созданный файл PDF перед сохранением в формате PDF.
• Просмотр страницы в браузере позволяет вставлять новые страницы, поворачивать страницы, копировать/вставлять/дублировать страницы, разделять (вырезать) страницы PDF по горизонтали и вертикали и удалять ненужные страницы.
• Очень полезные варианты выбора страницы для ускорения работы со страницей.
• В представлении браузера страницы обзора вы можете изменить порядок страниц в желаемой последовательности страниц в выходном PDF-файле.
• Настройки Smart Image Export: преобразование ColorSpace изображения, сжатие JPEG, понижение разрешения DPI и настройки размера бумаги для создания оптимизированного PDF без ущерба для качества. Опция выравнивания изображения для размещения центра изображения по горизонтали и вертикали.
• Параметры для установки размера выходной страницы PDF. Используйте размер бумаги по умолчанию или настройте размер страницы, поля и ориентацию.
• Добавьте защиту паролем для шифрования выходного PDF. Установите параметр, требующий открытого пароля для открытия и просмотра PDF-файлов, и даже запретите печать и копирование содержимого созданных PDF-документов без пароля владельца.
• Назначить описание метаданных для документа PDF. Задайте свойства «Заголовок», «Автор», «Тема» и «Ключевые слова».
• Объединение нескольких файлов PDF в один. Поддерживается слияние альтернативных страниц.
• ПОДДЕРЖИВАЕМЫЕ ФОРМАТЫ ИЗОБРАЖЕНИЙ:
Поддерживается большинство популярных форматов. Например, JPG, JPEG 2000, PNG, TIFF, BMP, GIF и все другие форматы изображений, поддерживаемые iOS, а также большинство типов изображений RAW для цифровых зеркальных камер, таких как CR2, NEF, ARW и т. д. Также поддерживается формат PDF.
• ВСТРОЕННАЯ ПРОГРАММА ПРОСМОТРА PDF:
— Встроенная программа просмотра PDF с полностью выбираемым и доступным для поиска текстовым содержимым. Выберите и скопируйте текст в буфер обмена для дальнейшего использования.
— Сведение и сжатие для увеличения и уменьшения изображения.
— Поиск символа, слова или предложения в PDF.
— Навигация в PDF-файлах с помощью функции просмотра эскизов слайдов, структуры PDF-файла и перехода на страницу.
— Быстро открывайте PDF-документы из электронной почты, браузера и любого установленного приложения, которое поддерживает Open In….
— Разрешить импортировать PDF-файлы из iCloud и других приложений-поставщиков облачных хранилищ, таких как DropBox, Google Диск и т. д.
• ПЕРЕДАВАТЬ ФАЙЛЫ И ДЕЛИТЬСЯ
— Вы можете делиться новыми сгенерированными PDF-файлами или архивировать несколько файлов в zip. Вы можете отправить файл(ы) PDF как вложение в почту, открыть в… другом приложении и отправить в облачное хранилище.