it-swarm-ru.tech

Изменение размера изображения до фактического размера.

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

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

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

20
Jan Fabry

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

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

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

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

11
Jan Fabry

Я искал в каталоге плагинов "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)

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

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

4
Jan Fabry

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

0
Raphael

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

0
Rarst

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

0
NetConstructor.com