Разное

Как объединить несколько jpg файлов в один: Merge PDF documents Online

12.06.2023

Склеиваем несколько pdf-файлов в один средствами Mac OS / Хабр

getback

Время на прочтение 2 мин

Количество просмотров

45K

Из песочницы

Для того, чтобы просто «склеить» несколько PDF-файлов в один не обязательно покупать редакторы в App Store, достаточно воспользоваться базовыми возможностями программ Preview и Automator, и сейчас я покажу, как это сделать.

Склеиваем pdf-файлы с помощью программы Preview (Просмотр)

Сначала выбираем первый документ и отрываем его с помощью программы Просмотр.
В верхнем меню выбираем вкладку «Вид» и «Миниатюры» (или Cmd+Alt+2).

Листаем панель миниатюр до конца и перетаскиваем на последнее место наш второй документ. Также можно расставить порядок страниц на свое усмотрение.
И теперь, чтобы сохранить новый документ, в верхнем меню выбираем «Файл» и «Экспорт». В настройках указываем формат «PDF». Готово! 🙂

Также склейку файлов можно автоматизировать.

Склеиваем множество pdf-файлов с помощью программы Automator

Сначала нам надо открыть приложение Automator, оно есть по умолчанию в любом современном Mac OS (лежит в папке Applications). После запуска Automator выбираем в меню иконку «Программа» и нажимаем «Выбрать».

Теперь нам надо выбрать документы, которые мы будем склеивать. Для этого просто выделяем их в Finder, перетаскиваем в Automator и сразу же расставляем в правильном порядке.

Далее в левом меню «Библиотеки» выбираем пункт «PDF-файлы» и два раза кликаем по действию «Combine PDF Pages». Для того, чтобы файлы были склеены по порядку, надо выбрать опцию «добавлением страниц» в настройках действия.

Нам надо скопировать полученный файл в удобное место. Для этого мы выбираем в меню «Библиотеки» пункт «Файлы и папки» и в нем действие «Copy Finder Items». В настройках выбираем папку, в которую будет скопирован наш конечный файл.

Для того, чтобы наш документ не пропал без вести, мы его переименуем. В пункте «Файлы и папки» выбираем «Rename Finder Items». В настройках указываем параметры «Имя единичного объекта», «Только основное имя» и в опции «до» пишем будущее имя нашего файла.

И последнее действие — запуск нашей программы! В правом верхнем углу находим кнопку «Запустить» и нажимаем «Ok».

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

UPD: спасибо, shir 🙂

Теги:

  • mac os
  • automator
  • pdf

Хабы:

  • PDF

Всего голосов 13: ↑8 и ↓5 +3

Комментарии 10

Илья @getback

Пользователь

12 способов, как сохранить файл в ПДФ формате | Журнал Digital World

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

Рассмотрим несколько рабочих способов, как сохранить файл в ПДФ формате ― с использованием десктопных программ, встроенных инструментов, онлайн-конвертеров и мобильного приложения.

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

PDF Commander

Приложение для редактирования и сохранения ПДФ. В процессе работы можно править текст, вставлять картинки, штампы и надписи любым шрифтом. По ходу чтения доступно добавление заметок и примечаний. ПО открывает несколько форматов изображений (JPG, PNG, TIFF, BMP) и TXT. Скачать PDF редактор можно бесплатно.

Как сохранить файл в формате PDF:

  1. Запустите редактор. Если у вас сканы или фотографии, перетащите их в программу. Воспользуйтесь командой «Инструменты» → «Объединить в PDF».
  2. Настройте последовательность картинок, используя стрелки на верхней панели.
  3. Подтвердите выбор. Теперь документ автоматически откроется.
  4. Щелкните «Файл», затем «Сохранить». Укажите папку для экспорта на жесткий диск и впишите название.
  5. Задайте параметры сжатия, подберите подходящее разрешение из списка или введите число вручную.

Adobe Acrobat

Мощная программа для просмотра, конвертации и создания ПДФ с нуля. Позволяет объединять несколько документов в один, добавлять изображения, таблицы, созданные в Excel, и многое другое. Готовый проект можно скачать на жесткий диск или сразу отправить на печать через внутренний менеджер. Сейчас для пользователей из России приложение недоступно: купить лицензию можно с помощью карты зарубежного банка (не забудьте про доступ через VPN).

Инструкция:

  1. Зайдите в меню, выберите «Создать» → «ПДФ из файла».
  2. В диалоговом окне загрузите нужный текстовый документ, нажмите «Открыть»
  3. Для импорта на ПК щелкните «Сохранить как».

Важно: если сохраняете с цифровой подписью, то после экспорта она будет считаться недействительной.

PDFelement

Кроссплатформенное приложение включает в себя редактор, конвертер, средство для добавления подписи. Создать новый можно из любого формата: Word-текста, скана, таблицы, чертежей и других. Поддерживается пакетное преобразование ― откройте сразу несколько листов и создайте из них многостраничник.

Как сохранить документ в ПДФ:

  1. Скачайте и установите PDFelement. Запустите программу и нажмите «Создать» в главном окне.
  2. Кликните на кнопку «Открыть», чтобы начать работу.
  3. Нажмите на «Файл» в верхнем углу слева и выберите опцию сохранения. Также можно кликнуть на иконку «Поделиться», чтобы загрузить итог в сервисы OneDrive, Dropbox, Google Диск или вывести на печать.

Конвертировать картинки можно с помощью просмотрщиков. Расскажем, как сделать это двумя способами.

Средство просмотра фотографий Windows

Инструмент «Фотографии» по умолчанию встроен в Windows 11 и 10 и с легкостью открывает фото, сканы и иллюстрации. В нем для превращения изображений используется функция печати посредством виртуального принтера.

Инструкция:

  1. Откройте снимок в просмотрщике «Фотографии». При необходимости отметьте галочкой сразу несколько снимков.
  2. Нажмите на значок с изображением принтера (опция «Печать»).
  3. В открывшемся окне выберите to PDF.
  4. Установите подходящие настройки: размер холста и снимка, поля, размер.
  5. Нажмите «Печать» и укажите желаемое расположение на жестком диске. Фотографии будут объединены за считанные секунды.

XnView Classic

Бесплатный файловый менеджер для сортировки и просмотра изображений.

Одно из основных преимуществ ― поддержка более 400 форматов и возможность конвертации их между собой. Коэффициент сжатия можно регулировать. Инструмент кроссплатформенный, устанавливается на Windows, macOS, Linux.

Инструкция:

  1. Запустите приложение. После открытия укажите путь к папке с картинками, выделите те, которые нужно объединить (чтобы отметить все сразу, зажмите сочетание клавиш Ctrl+A).
  2. Выберите в верхнем меню «Создать» → «Многостраничный».
  3. В диалоговом окне введите название и найдите в предложенном списке формат «Portable Document Format». Кликните «Опции», чтобы установить параметры сжатия.
  4. Кликните «Создать».

Для сохранения эти программы чаще всего используют виртуальный принтер. Разберем алгоритм действий на примере самых популярных инструментов.

Microsoft Word

Вы можете экспортировать как документ полностью, так и его отдельные листы. Кроме этого, Word позволяет настроить ориентацию (горизонтальная или вертикальная) и поля страницы.

Порядок работы:

  1. Щелкните кнопку «Файл» на панели инструментов.
  2. Перейдите в раздел «Печать», в выпадающем меню «Принтер» укажите «Microsoft Print to PDF».
  3. Задайте необходимые параметры: книжную ориентацию, поля, размер. Щелкните «Печать». Определите директорию, напишите название, затем ― «Сохранить».

Таким способом удобно конвертировать отдельные страницы. Если требуется преобразовать документ целиком, жмите «Сохранить как» → «Обзор». Укажите папку и тип.

Блокнот

Этот базовый инструмент с простым интерфейсом встроен в Windows с самых первых версий. Главное преимущество ― открывает любые тексты вне зависимости от расширения (правда, форматирование не сохраняется).

Инструкция:

  1. Кликните «Файл» в основном меню. Укажите «Печать» или зажмите комбинацию Ctrl+P.
  2. В разделе «Выделите принтер» отметьте уже знакомое ПДФ-устройство. Если нужно сохранить отдельные страницы, задайте диапазон.
  3. Укажите желаемую ориентацию, введите имя и щелкните кнопку «Печать». В заранее выбранной папке появится новый документ.

Google Docs

В этом онлайн-редакторе есть несколько надежных способов сделать ПДФ из любого контента. Например, письмо можно отправить по электронной почте или воспользоваться опциями вывода на бумагу. Отметим, что иногда форматирование и макет исходника теряются. Если планируете скинуть отчет преподавателю, но боитесь, что таблицы и колонки «поедут», используйте другие способы.

Пример действий:

  1. Откройте в главном меню пункт «Файл» → «Скачать».
  2. Выберите пункт «Документ PDF». Загрузка начнется автоматически.

Начиная с Windows (версия 10) встроенный принтер позволяет печатать любые бумаги или веб-страницы, предварительно сохраняя их в электронном виде. Это удобно: необязательно устанавливать сторонний софт.

Принтер от Windows

Частично мы уже коснулись функции виртуальной печати при разборе текстовых редакторов и средств для просмотра фото. Теперь рассмотрим, как запустить встроенный принтер Windows в системе:

  1. Откройте панель управления Windows.
  2. Перейдите в блок «Устройства и принтеры». Найдите в перечне пункт c ПДФ.
  3. В любом приложении с поддержкой печатания (Word, Wordpad, OpenOffice и другие) отправьте контент на устройство. Выберите указанный выше принтер и подтвердите решение.

Если вам нужно сохранить информацию на сайте, а специального софта под рукой нет, можно воспользоваться браузером. Он сможет загрузить веб-страницу на ПК в виде HTML, скриншота, вордовского или ПДФ-документа. В нашем случае нужен последний вариант. Инструкция подойдет для всех браузеров:

  1. Щелкните правой кнопкой мыши по любому свободному участку на активной странице.
  2. Найдите пункт «Печать».
  3. В графе «Принтер» кликните на «Сохранить как».
  4. Укажите диапазон листов, ориентацию будущего макета и дополнительные параметры: поля, размер бумаги и т.д. Подтвердите действие кнопкой сохранения.

Есть еще один вариант, как сохранить документ в формате PDF ― использовать сервис-конвертер. Потребуется только доступ в интернет, ПК или смартфон. Документация будет сохранена в изначальном виде, без искажений или потери данных.

PDF24Tools

Универсальный ресурс на русском языке, объединивший сразу несколько инструментов для работы с ПДФ: сжатие, разделение, защита паролем и т.п. Также PDF24 Tools включает конвертер, позволяющий преобразовать в разные форматы. За конфиденциальность данных можно не волноваться: через час после обработки информация удаляется с сервера.

Инструкция:

  1. На стартовой странице найдите блок «Конвертер» .
  2. Кликните «Преобразовать», выберите файлы с ПК или перетащите их мышкой в окно загрузки.
  3. Подождите завершения обработки. Теперь документ можно скачать, предварительно просмотреть или отредактировать. Ниже появится список доступных опций: отправить в облако, сжать, изменить метаданные и другие.

Редактор на смартфоне пригодится, если нужно срочно переслать документацию, а доступа к ПК нет. Мобильный софт обладает почти тем же функционалом, что и десктопный: умеют сканировать, редактировать и конвертировать.

iLovePDF

Один из самых популярных текстовых редакторов для ПК, также подойдет для iPhone и устройств на базе Android. В нем можно конвертировать страницы из Word, таблицы Excel, презентации или фото. Можете загрузить из внутреннего хранилища или карты памяти сколько угодно файлов, ограничений по количеству нет — основные опции в iLovePDF бесплатные.

Как сохранить файл в PDF:

  1. Запустите приложение и перейдите в меню «Инструменты».
  2. Выберите нужную опцию в зависимости от исходного формата.
  3. Импортируйте документ в приложение, щелкните «Дальше».
  4. Подождите окончания обработки, затем нажмите «Перейти к файлу». Теперь им можно поделиться через мессенджер, электронную почту, соцсети т. д.

Разберем причины проблем, возникающих при экспорте:

  • исходный проект поврежден;
  • установлен режим «только для чтения»;
  • автор отключил локальное сохранение в целях безопасности или защиты прав;
  • ошибки возникают из-за наличия таблиц, рисунков, объектов внутри;
  • используется устаревшая версия ПО;
  • возникли неполадки с сетью (если работаете в онлайн-сервисе).

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

Все способы преобразования работают, отличаются только алгоритм и время обработки. Для ПК подойдет PDF Commander. В этом редакторе легко открыть текст и преобразовать в нужный формат. Есть возможность создания документации с нуля ― софт поддерживает набор текста, рисование и вставку картинок.

Удобным решением без установки ПО будет онлайн-конвертер PDF24. Он полностью бесплатный и работает в любом браузере.

Если хотите конвертировать серию фото или текст на смартфоне, скачайте приложение iLovePDF и создавайте новый ПДФ.

Прокомментируйте первым!

4 простых способа объединить фотографии на Mac

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

ИЗОБРАЖЕНИЕ: Give Brigitta Schneiter (Unsplash)

На Mac существует несколько способов объединения фотографий, каждый из которых имеет свои преимущества. Следите за нашими инструкциями по различным методам объединения фотографий на Mac.

Содержание

4 способа объединения изображений на Mac

Существует несколько способов объединения изображений в macOS. Но мы перечисляем четыре популярных и простых метода в этой статье.

  • Использование предварительного просмотра
  • Использование ярлыков
  • Использование ImageMagick
  • Использование приложений с графическим интерфейсом

Теперь давайте пройдемся по каждому из них один за другим.

Способ 1. Используйте предварительный просмотр для объединения фотографий на Mac

Предварительный просмотр — это средство просмотра изображений и PDF-файлов по умолчанию на Mac. Он предустановлен в macOS и предлагает все необходимые функции, которые вам когда-либо понадобятся для основных операций с изображениями и PDF-файлами

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

Вот как объединить фотографии на Mac с помощью Preview:

  1. Открыть Finder.
  2. Перейдите к папке, содержащей изображения, которые вы хотите объединить.
  3. Щелкните правой кнопкой мыши или щелкните, удерживая клавишу Control, на первой фотографии и выберите Получить информацию . Запишите его ширину.
  4. Снова щелкните правой кнопкой мыши вторую фотографию, выберите Получить информацию и обратите внимание на ее ширину. Сделайте это для всех изображений, которые вы хотите объединить.
  5. Щелкните правой кнопкой мыши первую фотографию и выберите Дублировать. Дважды щелкните файл-дубликат, чтобы открыть его в режиме предварительного просмотра. (Это потому, что при объединении изображений мы не хотим потерять исходное изображение.)
  6. Нажмите Edit и выберите Select All , чтобы выбрать все изображение. Или нажмите Command + A сочетание клавиш.
  7. Перейдите к Редактировать и выберите Вырезать , чтобы вырезать выделенное (т. е. вашу фотографию). Или используйте сочетание клавиш Command + X . Предварительный просмотр сообщит вам, что это действие преобразует изображение в файл PNG (если это еще не так). Нажмите Преобразовать , чтобы продолжить.
  8. Щелкните Инструменты > Изменить размер . Здесь снимите флажок для параметра Масштабировать пропорционально .
  9. Введите сумму ширины всех изображений, которые вы хотите объединить в Ширина поля и нажмите OK .
  10. Перейдите к Правка > Вставить или используйте сочетание клавиш Command + V , чтобы вставить первую фотографию, то есть изображение, которое вы вырезали на шаге 7.
  11. Снова откройте второе изображение в окне предварительного просмотра и скопируйте его. Затем вернитесь к первому изображению в окне предварительного просмотра и нажмите Command + V , чтобы вставить его. Повторяйте это, пока не добавите все изображения, которые хотите объединить в одно изображение.
  12. После этого нажмите Файл > Сохранить или нажмите сочетание клавиш Command + S , чтобы сохранить файл.

После сохранения изображение можно использовать как есть, т. е. в формате PNG, или преобразовать его в JPG. В последнем случае, когда изображение открыто в режиме предварительного просмотра, нажмите Файл > Экспорт . Здесь нажмите кнопку раскрывающегося списка Формат , выберите желаемый результат (в данном случае JPG) и нажмите Сохранить.

Способ 2: объединение изображений на Mac с помощью ярлыков

Shortcuts — это утилита автоматизации для iPhone, iPad и Mac. В его галерее есть различные макросы (называемые ярлыками), которые позволяют быстро и эффективно выполнять различные операции. Кроме того, если вы хотите достичь чего-то, для чего нет ярлыка, у вас есть возможность создать собственный, комбинируя различные действия.

Используя последний, пользователь Shortcut в Интернете создал ярлык для объединения изображений. И это то, что мы будем использовать в этом методе. Загрузите ярлык по ссылке ниже и добавьте его в свою галерею ярлыков.

Загрузить: Ярлык «Объединить изображения»

После этого нам нужно изменить этот ярлык, чтобы он работал на Mac. Для этого откройте приложение «Ярлыки» и найдите ярлык «Объединить изображения». Дважды щелкните по нему и нажмите Shortcut Details 9.0039 кнопок на правой панели. Здесь установите флажки для «Использовать как быстрое действие» и «Поиск».

После этого вы можете объединить фотографии на Mac, используя этот ярлык, как показано в шагах ниже:

  1. Откройте Finder и перейдите к папке, содержащей изображения, которые вы хотите сшить вместе.
  2. Выберите изображения, щелкните их правой кнопкой мыши и выберите Быстрые действия > Объединить изображения в меню.
  3. При запуске ярлыка «Объединить изображения» вам будет предложено выбрать порядок, в котором вы хотите сшивать изображения. Выберите подходящий вариант и нажмите Готово .
  4. При запросе интервала между изображениями введите число и нажмите Готово.
  5. Выберите стиль, в котором вы хотите объединить изображения, и нажмите Готово. Доступные варианты: по горизонтали, по вертикали и по сетке.
  6. После того, как изображение будет сшито, вы увидите его предварительный просмотр в окне. Нажмите кнопку Открыть с предварительным просмотром в этом окне.
  7. Нажмите Файл > Сохранить или нажмите Command + S ярлык, чтобы вызвать параметры сохранения файла.
  8. Дайте файлу имя, выберите соответствующие параметры и нажмите Сохранить , чтобы сохранить файл.

Способ 3. Использование ImageMagick для объединения фотографий

ImageMagick — бесплатная утилита командной строки для управления изображениями на Mac с терминала. Это требует от вас использования нескольких простых команд, и вы можете использовать его не только для сшивания изображений.

Хотя ImageMagick предлагает удобство по сравнению с ручным методом, он не дает вам такой гибкости при настройке изображений, как ручной метод.

Чтобы объединить фотографии на Mac с помощью ImageMagick, вам необходимо сначала установить его. Откройте приложение «Терминал» и выполните для этого следующую команду:

brew install imagemagick

Если ImageMagick установлен, вот как его использовать:

  1. Поместите все файлы изображений, которые вы хотите объединить, в одну папку на вашем Рабочий стол. Назовем эту папку Images .
  2. Откройте Терминал.
  3. Перейдите в папку «Изображения», выполнив:
    cd Desktop
    cd Images

    Оказавшись в папке, запустите ls, чтобы проверить наличие изображений, которые вы хотите объединить.
  4. Теперь, в зависимости от того, как вы хотите соединить изображения, используйте опцию + добавить (для объединения изображений по горизонтали) или — добавить (для объединения изображений по вертикали). Следуйте приведенному ниже синтаксису для своей команды:
    convert +append image1.jpg image2.jpg final_image.jpg

Здесь замените image1. jpg и image2.jpg с именами файлов, которые вы хотите объединить, и final_image.jpg с именем, которое вы хотите дать вашему окончательному изображению.

Теперь ImageMagick объединит изображения, которые вы передали в приведенной выше команде, и вернет вам объединенное изображение в ваш текущий рабочий каталог.

Способ 4. Объединение изображений на Mac с помощью приложений с графическим интерфейсом

Если вам неудобно пользоваться Терминалом или вам нужен более простой способ объединения изображений на Mac, вы можете использовать сторонние приложения с графическим интерфейсом. Такие приложения просты в использовании, и, поскольку они предназначены для конкретной операции, вы получаете множество полезных опций, таких как различные шаблоны макетов, которые упрощают сшивание изображений и дают вам больше контроля над окончательным изображением.

Вот некоторые из лучших сторонних приложений для объединения изображений на Mac:

  1. Union
  2. Миксграмм
  3. Средство для создания фотоколлажей
  4. Тунакан

Соединение изображений по горизонтали или вертикали на Mac упрощенное

Многие операции с PDF и изображениями кажутся сложными на Mac, пока вы не ознакомитесь с истинным потенциалом предварительного просмотра. Соединение изображений — одна из многих таких задач, которую Preview значительно упрощает на Mac.

Конечно, нельзя отрицать, что такие инструменты, как Photoshop или GIMP, предлагают большую гибкость и контроль над манипулированием изображениями. Но эти преимущества имеют свою цену: они требуют подписки и опыта работы с инструментом. Предварительный просмотр и другие методы, напротив, просты и эффективно справляются со своей задачей.

Была ли эта статья полезной?

Да Нет

TechPP поддерживается нашей аудиторией. Мы можем получать партнерские комиссионные от покупки ссылок на этом сайте.

Объединение нескольких изображений по горизонтали с помощью Python

Задавать вопрос

спросил

Изменено 5 месяцев назад

Просмотрено 274 тыс. раз

Я пытаюсь объединить несколько изображений JPEG по горизонтали в Python.

Проблема

У меня есть 3 изображения — каждое 148 х 95 — см. вложение. Я только что сделал 3 копии одного и того же изображения, поэтому они одинаковы.

Моя попытка

Я пытаюсь соединить их по горизонтали, используя следующий код:

 import sys
из изображения импорта PIL
list_im = ['Test1.jpg','Test2.jpg','Test3.jpg']
# создает новое пустое изображение, режим RGB и размер 444 на 95
new_im = Image.new('RGB', (444,95))
для элемента в list_im:
    для я в xrange (0,444,95):
        im=Image.open(элемент)
        new_im.paste(им, (я,0))
new_im.save('test.jpg')
 

Однако это приводит к выводу, прикрепленному как test.jpg .

Вопрос

Есть ли способ соединить эти изображения по горизонтали так, чтобы суб-изображения в test.jpg не отображали дополнительное частичное изображение?

Дополнительная информация

Я ищу способ горизонтального объединения n изображений. Я хотел бы использовать этот код в целом, поэтому я бы предпочел:

  • не жестко кодировать размеры изображения, если это возможно
  • укажите размеры одной строкой, чтобы их можно было легко изменить
  • python
  • python-3.x
  • библиотека изображений python
  • python-2.x
  • паста

6

Вы можете сделать что-то вроде этого:

 import sys
из изображения импорта PIL
images = [Image.open(x) для x в ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']]
ширина, высота = zip(*(i.size для i на изображениях))
общая_ширина = сумма (ширина)
max_height = макс (высота)
new_im = Image.new('RGB', (общая_ширина, максимальная_высота))
х_смещение = 0
для меня в изображениях:
  new_im.paste(им, (x_offset,0))
  x_offset += im.size[0]
new_im.save('test.jpg')
 

Test1.jpg

Test2.jpg

Test3. jpg

 

9 test.jpg

3

3 74


Вложенный для для i в xrange(0,444, 95): вставляет каждое изображение 5 раз с шагом 95 пикселей. Каждая итерация внешнего цикла вставляется поверх предыдущей.

 для элемента в list_im:
  для я в xrange (0,444,95):
    im=Image.open(элемент)
    new_im.paste(им, (я,0))
  new_im.save('new_' + элемент + '.jpg')
 

7

Я бы попробовал это:

 импортировать numpy как np
импорт PIL
из изображения импорта PIL
list_im = ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']
imgs = [Image.open(i) для i в list_im]
# выберите изображение, которое является самым маленьким, и измените размер остальных, чтобы они соответствовали ему (здесь может быть произвольная форма изображения)
min_shape = sorted( [(np.sum(i.size), i.size ) для i в imgs])[0][1]
imgs_comb = np.hstack([i.resize(min_shape) для i в imgs])
# сохранить эту красивую картинку
imgs_comb = Изображение. из массива (imgs_comb)
imgs_comb.save('Trifecta.jpg')
# для вертикальной укладки все просто: используйте vstack
imgs_comb = np.vstack([i.resize(min_shape) для i в imgs])
imgs_comb = Изображение.из массива (imgs_comb)
imgs_comb.save('Trifecta_vertical.jpg')
 

Это должно работать до тех пор, пока все изображения относятся к одному и тому же типу (все RGB, все RGBA или все оттенки серого). Нетрудно убедиться в этом, добавив еще несколько строк кода. Вот мои примеры изображений и результат:

5

Редактировать: ответ DTing более применим к вашему вопросу, поскольку он использует PIL, но я оставлю это на случай, если вы захотите узнать, как это сделать в numpy.

Вот решение numpy/matplotlib, которое должно работать для N изображений (только цветных изображений) любого размера/формы.

 импортировать numpy как np
импортировать matplotlib.pyplot как plt
определение concat_images (imga, imgb):
    """
    Объединяет два цветных изображения ndarray рядом друг с другом. 
    """
    ха, ва = imga.shape[:2]
    hb,wb = imgb.shape[:2]
    max_height = np.max([га, хб])
    общая_ширина = wa+wb
    new_img = np.zeros (форма = (max_height, total_width, 3))
    new_img[:ha,:wa]=imga
    new_img[:hb,wa:wa+wb]=imgb
    вернуть new_img
определение concat_n_images (image_path_list):
    """
    Объединяет N цветных изображений из списка путей к изображениям.
    """
    вывод = нет
    для i img_path в перечислении (image_path_list):
        img = plt.imread(img_path)[:,:,:3]
        если я==0:
            вывод = изображение
        еще:
            вывод = concat_images (выход, изображение)
    возвратный вывод
 

Вот пример использования:

 >>> images = ["ronda.jpeg", "rhod.jpeg", "ronda.jpeg", "rhod.jpeg"]
>>> вывод = concat_n_images(изображения)
>>> импортировать matplotlib.pyplot как plt
>>> plt.imshow(выход)
>>> plt.show()
 

2

Вот функция, обобщающая предыдущие подходы, создающая сетку изображений в PIL:

 из PIL import Image
импортировать numpy как np
def pil_grid (изображения, max_horiz = np. iinfo (int). max):
    n_images = длина (изображения)
    n_horiz = мин (n_изображений, макс_гориз)
    h_sizes, v_size = [0] * n_horiz, [0] * (n_images // n_horiz)
    для i, im в перечислении (изображения):
        h, v = i % n_horiz, i // n_horiz
        h_size[h] = max(h_size[h], im.size[0])
        v_size[v] = max(v_size[v], im.size[1])
    h_sizes, v_sizes = np.cumsum([0] + h_sizes), np.cumsum([0] + v_sizes)
    im_grid = Image.new('RGB', (h_sizes[-1], v_sizes[-1]), color='white')
    для i, im в перечислении (изображения):
        im_grid.paste(im, (h_sizes[i % n_horiz], v_sizes[i // n_horiz]))
    вернуть im_grid
 

Уменьшит каждую строку и столбец сетки до минимума. Вы можете иметь только строку, используя pil_grid(images), или только столбец, используя pil_grid(images, 1).

Одним из преимуществ использования PIL по сравнению с решениями на основе массива numpy является то, что вы можете работать с изображениями, структурированными по-разному (например, изображениями в градациях серого или на основе палитр).

Примеры выходных данных

 def dummy(w, h):
    «Создает фиктивное изображение PIL заданных размеров»
    из PIL импортировать ImageDraw
    im = Image.new('RGB', (w, h), color=tuple((np.random.rand(3) * 255).astype(np.uint8)))
    рисовать = ImageDraw.Draw(им)
    точки = [(i, j) для i в (0, im.size [0]) для j в (0, im.size [1])]
    для я в диапазоне (len (точки) - 1):
        для j в диапазоне (i + 1, len (точки)):
            draw.line (точки [i] + точки [j], fill = 'черный', ширина = 2)
    верни меня
dummy_images = [dummy (20 + np.random.randint (30), 20 + np.random.randint (30)) для _ в диапазоне (10)]
 

pil_grid(dummy_images) :

pil_grid(dummy_images, 3) :

pil_grid(d 1 4 : pil_images,

1

На основе ответа DTing я создал более простую в использовании функцию:

 из PIL import Image
def append_images (изображения, направление = 'горизонтальное',
                  bg_color=(255 255 255), выравнивание='центр'):
    """
    Добавляет изображения в горизонтальном/вертикальном направлении. 
    Аргументы:
        images: список изображений PIL.
        направление: направление конкатенации, «горизонтальное» или «вертикальное»
        bg_color: цвет фона (по умолчанию: белый)
        alignment: режим выравнивания, если изображения нуждаются в дополнении;
           «слева», «справа», «сверху», «снизу» или «по центру»
    Возвращает:
        Объединенное изображение как новый объект изображения PIL.
    """
    ширина, высота = zip(*(i.size для i на изображениях))
    если направление == 'горизонтальное':
        new_width = сумма (ширина)
        new_height = макс (высота)
    еще:
        new_width = макс (ширина)
        new_height = сумма (высота)
    new_im = Image.new('RGB', (new_width, new_height), color=bg_color)
    смещение = 0
    для меня в изображениях:
        если направление == 'горизонтальное':
            у = 0
            если выравнивание == 'центр':
                y = int((new_height - im.size[1])/2)
            выравнивание Элиф == 'внизу':
                y = новая_высота - im. size[1]
            new_im.paste(im, (смещение, y))
            смещение += im.size[0]
        еще:
            х = 0
            если выравнивание == 'центр':
                x = int((new_width - im.size[0])/2)
            выравнивание Элиф == 'правильно':
                x = новая_ширина - im.size[0]
            new_im.paste(im, (x, смещение))
            смещение += im.size[1]
    вернуть new_im
 

Позволяет выбрать цвет фона и выравнивание изображения. Также легко сделать рекурсию:

 изображений = карта (Image.open, ['hummingbird.jpg', 'tiger.jpg', 'monarch.png'])
combo_1 = append_images (изображения, направление = 'горизонтальное')
combo_2 = append_images(изображения, direction='горизонтально', alignment='top',
                        bg_color=(220, 140, 60))
combo_3 = append_images([combo_1, combo_2], direction='vertical')
combo_3.save('combo_3.png')
 

1

Если высота всех изображений одинакова,

 импортировать numpy как np
imgs = ['a. jpg', 'b.jp', 'c.jpg']
конкатенированный = Image.fromarray(
  np.concatenate (
    [np.array(Image.open(x)) для x в imgs],
    ось=1
  )
)
 

Возможно, вы можете изменить размер изображений перед конкатенацией следующим образом,

 импортировать numpy как np
imgs = ['a.jpg', 'b.jpg', 'c.jpg']
конкатенированный = Image.fromarray(
  np.concatenate (
    [np.array(Image.open(x).resize((640,480)) для x в imgs],
    ось=1
  )
)
 

1

Вот мое решение:

 из изображения импорта PIL
def join_images(*rows, bg_color=(0, 0, 0, 0), выравнивание=(0,5, 0,5)):
    строки = [
        [image.convert('RGBA') для изображения в строке]
        для строки
        рядами
    ]
    высоты = [
        max(image.height для изображения в строке)
        для ряда
        рядами
    ]
    ширина = [
        max (image.width для изображения в столбце)
        для колонки
        в почтовом индексе (* строк)
    ]
    tmp = Image. new(
        'РГБА',
        размер = (сумма (ширина), сумма (высота)),
        цвет = bg_color
    )
    для i, строка в перечислении (строки):
        для j изображение в перечислении (строка):
            y = сумма (высоты [: i]) + int ((высоты [i] - image.height) * выравнивание [1])
            x = сумма (ширины [: j]) + int ((ширины [j] - image.width) * выравнивание [0])
            tmp.paste (изображение, (х, у))
    вернуть временную температуру
def join_images_horizontally (* строка, bg_color = (0, 0, 0), выравнивание = (0,5, 0,5)):
    вернуть join_images(
        ряд,
        bg_color=bg_color,
        выравнивание = выравнивание
    )
def join_images_vertically (* столбец, bg_color = (0, 0, 0), выравнивание = (0,5, 0,5)):
    вернуть join_images(
        *[[image] для изображения в столбце],
        bg_color=bg_color,
        выравнивание = выравнивание
    )
 

Для этих изображений:

 изображений = [
    [Изображение.open('банан.png'), Image.open('яблоко.png')],
    [Image. open('лайм.png'), Image.open('лимон.png')],
]
 

Результаты будут выглядеть так:


 join_images(
    *изображений,
    bg_color = 'зеленый',
    выравнивание=(0,5, 0,5)
).показывать()
 


    *изображений,
    bg_color = 'зеленый',
    выравнивание = (0, 0)
).показывать()
 


    *изображений,
    bg_color = 'зеленый',
    выравнивание=(1, 1)
).показывать()
 

Существует также skimage.util.montage для создания монтажа изображений одинаковой формы:

 import numpy as np
импорт PIL
из изображения импорта PIL
из skimage.util импортировать монтаж
list_im = ['Test1.jpg', 'Test2.jpg', 'Test3.jpg']
imgs = [np.array(Image.open(i)) для i в list_im]
монтаж (изображения)
 
 """
merge_image принимает три параметра, первые два параметра определяют
два изображения, которые нужно объединить, и третий параметр, т.е. по вертикали
это логический тип, который, если True, объединяет изображения по вертикали
и, наконец, сохраняет и возвращает имя_файла
"""
def merge_image (img1, img2, по вертикали):
    изображения = список (карта (Image. open, [img1, img2]))
    ширина, высота = zip(*(i.size для i на изображениях))
    если вертикально:
        max_width = макс (ширина)
        total_height = сумма (высота)
        new_im = Image.new('RGB', (max_width, total_height))
        у_смещение = 0
        для меня в изображениях:
            new_im.paste(im, (0, y_offset))
            y_offset += im.size[1]
    еще:
        общая_ширина = сумма (ширина)
        max_height = макс (высота)
        new_im = Image.new('RGB', (общая_ширина, максимальная_высота))
        х_смещение = 0
        для меня в изображениях:
            new_im.paste(им, (x_offset, 0))
            x_offset += im.size[0]
    new_im.save('test.jpg')
    вернуть 'test.jpg'
 
 из __future__ import print_function
импорт ОС
из импорта пил Изображение
файлы = [
      '1.png',
      '2.png',
      '3.png',
      '4.png']
результат = Изображение.новый("RGB", (800, 800))
для индекса, файл в перечислении (файлы):
путь = os.path.expanduser(файл)
img = Image.open(путь)
img. thumbnail((400, 400), Image.ANTIALIAS)
х = индекс // 2 * 400
у = индекс % 2 * 400
ш, ч = размер изображения
result.paste(img, (x, y, x + w, y + h))
результат.сохранить(os.path.expanduser('output.jpg'))
 

Выход

Просто добавление к уже предложенным решениям. Предполагается та же высота, без изменения размера.

 система импорта
импортировать глобус
из изображения импорта PIL
Image.MAX_IMAGE_PIXELS = 100000000 # Ошибка изображения PIL при обработке очень больших изображений
imgs = [Image.open(i) для i в list_im]
ширина, высота = почтовый индекс (* (i.size для i в imgs))
общая_ширина = сумма (ширина)
max_height = макс (высота)
new_im = Image.new('RGB', (общая_ширина, максимальная_высота))
# Разместите первое изображение
new_im.paste(imgs[0],(0,0))
# Итеративно добавлять изображения в список по горизонтали
смещение = 0
для i в диапазоне (1, len (imgs), 1):
    **hoffset=imgs[i-1].size[0]+hoffset # обновить смещение**
    new_im.paste(imgs[i],**(hoffset,0)**)
new_im. save('output_horizontal_montage.jpg')
 

мое решение будет:

 import sys
импорт ОС
из импорта PIL Image, ImageFilter
из PIL импортировать ImageFont
из PIL импортировать ImageDraw
os.chdir('C:/Users/Sidik/Desktop/setup')
печать (os.getcwd())
image_list=['IMG_7292.jpg','IMG_7293.jpg','IMG_7294.jpg', 'IMG_7295.jpg' ]
image = [Image.open(x) для x в image_list] # список
im_1 = изображение[0].поворот(270)
im_2 = изображение[1].поворот(270)
im_3 = изображение[2].поворот(270)
#im_4 = изображение[3].поворот(270)
высота = изображение [0]. размер [0]
ширина = изображение [0]. размер [1]
# Создаем пустую белую рамку изображения
new_im = Image.new('RGB', (высота * 2, ширина * 2), (255 255 255))
new_im.paste (im_1, (0,0))
new_im.paste (im_2, (высота, 0))
new_im.paste(im_3,(0,ширина))
new_im.paste(im_4,(высота,ширина))
рисовать = ImageDraw.Draw(new_im)
шрифт = ImageFont.truetype('arial',200)
draw.text((0, 0), '(a)', fill='white', font=font)
draw.text((высота, 0), '(b)', fill='white', font=font)
draw. text((0, ширина), '(c)', fill='white', font=font)
#draw.text((высота, ширина), '(d)', fill='white', font=font)
new_im.show()
new_im.save('BS1319.pdf')
[![Лазерные пятна на краю][1]][1]
 
 #**Как объединить обрезанные изображения с исходным изображением**
 images = [Image.open(x) для x в images_list]
 print("Длина::", len(изображения))
 ширина, высота = zip(*(i.size для i на изображениях))
 печать (ширина, высота)
 общая_ширина = сумма (ширина)
 max_height = сумма (высота)
 печать (общая_ширина, максимальная_высота) 
 new_im = Image.new('RGB', (5*384, 5*216)) 
 х_смещение = 0
 у_смещение = 0 
 img_size = [384 216]
 def сгруппировано (итерируемый, n):
 вернуть zip(*[iter(iterable)]*n) 
 для x, y, a, b, c в группе (изображения, 5):
 темп = []
 temp.append([x,y,a,b,c])
 печать (темп [0])
 печать (длина (темп [0]))
 для lsingle_img в temp[0]:
 # печать (lsingle_img)
 print("x_y_offset: ", (x_offset, y_offset))
 new_im.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *