Изменение размера изображения до фактического размера, используемого в редакторе?

20

Есть ли способ изменить размер изображения до фактического размера, который будет показан в записи? У меня есть пользователи, которые импортируют большое изображение, а затем изменяют его размер в визуальном редакторе. Это легко, поскольку они могут просто перетаскивать изображение до нужного размера, не открывая сначала редактор изображений, не меняя размер изображения, не сохраняя его и не загружая его как отдельное вложение. Конечно, это иногда приводит к изображению шириной 100px в посте, но в действительности 1500px.

Есть ли плагин, который делает это при сохранении нового сообщения? Я хотел бы сохранить существующее полноразмерное изображение (для связывания или последующего изменения размера), но просто добавить дополнительный размер (и сохранить его в _wp_attachment_metadataобъекте), чтобы в этом сообщении было изображение правильного размера и ссылка на полноразмерное вложение.

Конечно, все существующие посты также должны обрабатываться один раз. <img>теги там , возможно, просто width, просто height, или ни один из них: все это должно быть очищено, так что все они имеют правильные width, heightи изображение этого размера.

Ян Фабри
источник
Вы согласны с решением на стороне сервера, которое изменяет размеры изображений на лету на основе параметров получения, передаваемых в существующий URL-адрес изображения? Apache / mod_rewrite?
Хакре
@hakre: Вы имеете в виду фильтр пост-сохранения, который проходит через пост и перезаписывает каждое изображение как image.png?w=300&h=400, или image-300x400.png, который я бы тогда выбрал через Mod_Rewrite и изменил размер (и кеш) по запросу? Является ли это преимуществом перед однократным созданием измененных изображений (в этом действии после сохранения) и передачей их в виде статических файлов?
Ян Фабри
@ Ян Фабри Да, это то, что было в моей голове. Преимущество заключается в том, что вы создаете изображение только по запросу, поэтому, пока автор редактирует сообщение, это не будет создавать файлы как таковые. Помимо того, что он не блокирует редактирование, он больше не связан с wp, поэтому вы даже можете создать какой-нибудь серверный сервис, CDN-кеширование или что-то еще. :) --- wp.com делает нечто подобное, если я правильно понимаю.
hakre
В сочетании с кэшированием этот подход действительно великолепен. Я бы предположил, что есть плагин для этого. Вы также можете запустить установку Zenphoto вместе с плагином, таким как Zenphoto Gallery (моя собственная: lmazy.verrech.net/zenphoto-gallery )
Рафаэль
@Raphael: Действительно, сегодня я исследовал возможные плагины, и некоторые используют этот подход. Если у вас есть что добавить в мой список , пожалуйста, сделайте это, чтобы его могли редактировать все.
Ян Фабри

Ответы:

11

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

Базовый плагин представляет собой Resizer по требованию . Этот плагин отслеживает запросы на несуществующие файлы в каталоге загрузок и создает изображения требуемого размера при необходимости. Например, image-200x100.jpgсоздаст и вернет image.jpg, но изменил размеры до 200 на 100 пикселей. Изображение сохраняется под этим именем в каталоге, поэтому дальнейшие запросы обрабатываются сервером напрямую.

Второй плагин, Resize img tags , изменяет <img>теги так, чтобы их srcатрибуты включали данные ширины и / или высоты. Это позволяет первому плагину обслуживать правильные изображения. Вместе они делают то, что я хочу, и мне нужно только создать функцию однократного запуска для преобразования всех существующих постов, но это должно быть легко (я не хочу подключаться the_contentк чему-то, что должно выполняться только один раз).

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

Ян Фабри
источник
1
Эти звуки действительно превосходны! Я не могу дождаться, чтобы успеть их опробовать, когда они мне понадобятся для реальных сценариев.
MikeSchinkel
Отличный материал. Вы планируете добавить их в репозиторий плагинов worpdress?
hakre
@hakre: Да, действительно. Однажды я подготовил их для экспертной оценки :-)
Ян Фабри
4

Я искал каталог плагинов для "resize"или "crop"(последний для другого вопроса ), и отметил мои результаты в общедоступной электронной таблице Google . Поиск плагинов очень запутан в результатах поиска (последняя страница "resize"поиска показывает «Показано 145-150 из 273 плагинов»), поэтому я, возможно, пропустил несколько. Полусвязанные заметки: всем кажется, что миру нужен еще один плагин для слайд-шоу. Мало кто, кажется, понимает, что content_save_preможет быть лучшим фильтром для выполнения тяжелого анализа, чем the_content.

Я не тестировал ни один из этих плагинов, но вот список плагинов, которые, кажется, делают то, что я хочу. Я добавил "Совместимый до" номер версии в скобках.

  • ChoiceCuts Image Juggler , с несколькими функциями обработки изображений, доступными через API (3.0.1)
  • AutoThumb , переписывает URL-адреса для обработчика, который использует phpThumb (2.9.2)
  • Символьные ссылки через специальный [img]шорткод (2.9.2)
  • com_resize , переписывает URL-адреса для обработчика, который использует phpThumb, а также внешние изображения (2.6)
  • ImageScaler , создает новые размеры при необходимости и изменяет URL-адреса в изображениях (2.3)
  • ImageScaler Modded , слегка измененная версия ImageScaler (2.3.1)

Личные мысли: первые четыре переписывают URL-адрес динамической страницы (что-то вроде /wp-content/plugins/my-plugin/image.php?src=[original src]&w=100&h=50) с различными формами кэширования. Я предпочитаю реальное изображение, которое создается по мере необходимости, аналогично подходу ImageScaler. Однако я бы разделил это (и включил предложение Хакре в комментарии) и сначала переписал все URL-адреса с /wp-content/uploads/2010/11/image.jpgпо /wp-content/uploads/2010/11/image-100x50.jpg, а затем позволил сценарию создать отсутствующие изображения. Первый запрос на это изображение создает изображение, все последующие запросы используют это созданное изображение. Это также позволяет мне разделить функциональность между различными плагинами. Я опубликую это решение в отдельном ответе.

Эти плагины ограничивают изображения до определенного максимального размера (чем это отличается от указания $content_width?):

  • JP-redesign-images , проверяет как горячие ссылки, так и слишком большие изображения (только если они слишком велики, а не только, если их размер просто изменен) (3.0.1)
  • Hungred Image Fit , проверяет слишком большие изображения (3.0.0)

Следующий плагин интересен по другим причинам:

Это сообщение вики сообщества, поэтому оно может быть обновлено, если вы найдете новые плагины.

Ян Фабри
источник
0

Как насчет использования timthumb и передачи переменной для автоматического изменения размера / размеров изображения и уровней масштабирования? Таким образом, исходные размеры изображения могут быть сохранены. Если вам нужно несколько примеров ниже, дайте мне знать.

NetConstructor.com
источник
0

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

Рафаэль
источник
Я знаю, что лучше придерживаться предопределенных размеров изображения, но мои клиенты этого не делают :-) Если они могут изменить размер изображения в редакторе, то логично, что система последует этому выбору.
Ян Фабри
Ну, вы могли бы исключить эту возможность и заставить их работать чисто;)
Рафаэль
Это также интересный вопрос: «Как отключить функцию изменения размера в TinyMCE?» Если вы знаете ответ на этот вопрос, пожалуйста, создайте новый вопрос и ответьте на него самостоятельно, он, вероятно, будет полезен для других.
Ян Фабри
0

Похоже, что недавно выпущенный плагин Image Pro делает именно это. Я еще не тестировал себя, демо выглядит очень впечатляюще, отметим плохую совместимость браузера (в данный момент только для Firefox).

Rarst
источник