Комментарии 31
Спасибо!
Пошёл читать и тестить.
Пошёл читать и тестить.
НЛО прилетело и опубликовало эту надпись здесь
"Сдесь" и "матерриалы" портят оформление отличной идеи. За идею - двойное спасибо ;)
Спасибо, интересно, мы тоже выбрали ImageMagick для своего проекта.
На мой взгляд, у вас шарпинг чрезмерен
Вот www.xl-tour.ru/imagick/cmd.php мой программист написал скриптик, позволяющий на примере одной фотки поиграться с шарпингом и качеством файла при обработке через ImageMagick.
Пока мы для себя выбрали следующие параметры:
convert result.jpg -resize 600x -unsharp 0.2x0+300+0 –compress JPEG -quality 80 result.jpg
Сравнивали с фотошопом, он при тех же параметрах шарпинга, и качестве сохранения 51% делает фотографии чуть меньше и чуть лучше. К сожалению, перегнать фотошоп нам пока не удалось.
На мой взгляд, у вас шарпинг чрезмерен
Вот www.xl-tour.ru/imagick/cmd.php мой программист написал скриптик, позволяющий на примере одной фотки поиграться с шарпингом и качеством файла при обработке через ImageMagick.
Пока мы для себя выбрали следующие параметры:
convert result.jpg -resize 600x -unsharp 0.2x0+300+0 –compress JPEG -quality 80 result.jpg
Сравнивали с фотошопом, он при тех же параметрах шарпинга, и качестве сохранения 51% делает фотографии чуть меньше и чуть лучше. К сожалению, перегнать фотошоп нам пока не удалось.
Пост — в закладки, спасибо — в карму;-)
Огромное спасибо! Проектируем фотохостинг и буквально позовчера встала именна эта проблема, проблема в качестве и четкости превьюшек.
Прямо по щучьему велению. :-)
Прямо по щучьему велению. :-)
Вот сколько ни вглядывался, разницы между изображениями, кроме как с первым, не заметил...
Возможно, я выбрал не совсем удачную фотку, которая для меня ассоциируется с GNU/Linux-сообществом :). Тогда я попробую продемонстрировать разницу на примере фото Ричарда Столлмана:
Разницу можно увидеть в мелких деталях: борода, глаза, рот. Я специально для MagickWand поставил 100% качество, чтоб на разницу не влияла компрессия. Параметры Шарпинга те же: MagickSharpenImage($mgck_local,1,4)
Разницу можно увидеть в мелких деталях: борода, глаза, рот. Я специально для MagickWand поставил 100% качество, чтоб на разницу не влияла компрессия. Параметры Шарпинга те же: MagickSharpenImage($mgck_local,1,4)
Здорово, что хоть кто-то решился написать о данной библиотеке. Буквально только позавчера тут говорили о том, что PHP+GD1/2 стандартный вариант, но PHP+IM все же мощнее. Единственно что меня в MagickWand смещает это не всегда понятная документация (местами вообще было не ясно, что же имел в виду автор документации) и практически полное отсутсвие примеров. Ну и процедурный стиль конечно тоже немного напрягает.
Имхо, IM в рунете освещен не очень хорошо.
Автору спасибо. Мог бы, поставил бы плюс.
Имхо, IM в рунете освещен не очень хорошо.
Автору спасибо. Мог бы, поставил бы плюс.
стиль процедурный, но подход объектно-ориентированный. Практически все методы используют id-шник созданного wand'а в качестве первого параметра. Это типично для нскоро портированных в ОО язык чисто-сишных API. Такая же ситуация в curl'е. Это нормально. кроме того несложно написать обёртку, выглядящю как нормальный OO API.
Кстати про работу с текстом и вектором в "классическом ImageMagick" (видимо имеется ввиду commnd-line интерфейс) автор обманывает: из коммандной строки convert умеет абсолютно всё, что умеет библиотека MagickWand.
собственно, я пользуюсь комманд-лайном - это позволяет одновременно и ворочать большие картинки и не выделять php для этого кучу памяти, которую если разрешить он потенциально может отъесть в других местах, не связанных с графикой (чего я не хочу [-: ).
Кстати про работу с текстом и вектором в "классическом ImageMagick" (видимо имеется ввиду commnd-line интерфейс) автор обманывает: из коммандной строки convert умеет абсолютно всё, что умеет библиотека MagickWand.
собственно, я пользуюсь комманд-лайном - это позволяет одновременно и ворочать большие картинки и не выделять php для этого кучу памяти, которую если разрешить он потенциально может отъесть в других местах, не связанных с графикой (чего я не хочу [-: ).
Спасибо. Как-то раз заказчик как раз жаловался на качество превьюшек. Я не знал, что ему ответить и ссылался на ограничения технических средств. :) Теперь все встало на свои места.
НЛО прилетело и опубликовало эту надпись здесь
о сенкс, про шарпинг актуально.
IM при ресайзе чуть быстрее на больших картинках (более 6000x6000 px), на маленьких (типа обоев на рабочий стол) разницы не заметил.
Вообще сравнивать phpThumbs и IM не совсем корректно, ибо thumbs использует IM если он установлен, и только в крайнем случае обращается к GD. Я, кстати, вообще не уверен, что он умеет шарпинг на чистом GD - не пробовал. (-:
Вообще сравнивать phpThumbs и IM не совсем корректно, ибо thumbs использует IM если он установлен, и только в крайнем случае обращается к GD. Я, кстати, вообще не уверен, что он умеет шарпинг на чистом GD - не пробовал. (-:
кстати, очень жаль, что IM активно не развивается вот уже много лет. Активно - я под этим понимаю написание новых фильтров и улучшение удобства работы с утилитой convert (там очень неудобна для понимания система "гравитации" при нарезке изображений). Например очень не хватает фильтров, которые "вытягивают" недодержанные участки изображения или создают блики в ярких местах, итп.
А мы для Unsharp используем Unsharp Mask for PHP - которая замечательно работает с GD.
http://vikjavev.no/computing/ump.php
http://vikjavev.no/computing/ump.php
Не знал об этой библиотеке, спасибо что написали.
Это не функция движка GD, она написана на самом php и как вы, сами понимаете, она очень заметно проигрывает в скорости.
Я 100 раз сделал шарпинг с помощью Unsharp Mask for PHP вышеупомянутому фото - это заняло 17 секунд, аналогичная операция на MagickWand заняла 0,6 секунды (Почти в 30 раз медленее!). А если шарпить прийдется 640x480 тогда потеря производительности будет гораздо ощутимее.
Качество шарпинга с натяжкой можно стравнивать с MagickWand.
Это не функция движка GD, она написана на самом php и как вы, сами понимаете, она очень заметно проигрывает в скорости.
Я 100 раз сделал шарпинг с помощью Unsharp Mask for PHP вышеупомянутому фото - это заняло 17 секунд, аналогичная операция на MagickWand заняла 0,6 секунды (Почти в 30 раз медленее!). А если шарпить прийдется 640x480 тогда потеря производительности будет гораздо ощутимее.
Качество шарпинга с натяжкой можно стравнивать с MagickWand.
С качеством я поспешил делать выводы. Когда установил идентичные параметры шарпинга, "на-глаз", разницу с MagickWand не увидел.
Проблема останется только в производительности, упомянутой Вами, функции.
Проблема останется только в производительности, упомянутой Вами, функции.
Как по мне, то документация не ахти, да и либа не самая адекватная (производительность на высоте но стабильность ...).
Например под Freebsd есть проект который использует ф-цию MagickPaintOpaqueImage, перенесли проект под Linux(ubuntu), перестало работать, оказалось не знает magickwand такую ф-цию MagickPaintOpaqueImage, далее пришло обновление и для фри, и те же пироги, все лягло, просто исчезла функция :(
Например под Freebsd есть проект который использует ф-цию MagickPaintOpaqueImage, перенесли проект под Linux(ubuntu), перестало работать, оказалось не знает magickwand такую ф-цию MagickPaintOpaqueImage, далее пришло обновление и для фри, и те же пироги, все лягло, просто исчезла функция :(
НЛО прилетело и опубликовало эту надпись здесь
Пожалуйста, подскажите, чем лучше нарезать на кусочки фиксированного размера (256x256) очень большую картинку (tiff) с разрешением 17002x19002 *750мб) точек (и еще одну картинку 27000x20000 н 1.56гб)
convert из ImageMagick у меня на первой картинке уходит думать в вечность,
а на второй просто вылетает по недостатку памяти.
Фотошоп открывает, но там я не знаю, как это автоматизировать.
convert из ImageMagick у меня на первой картинке уходит думать в вечность,
а на второй просто вылетает по недостатку памяти.
Фотошоп открывает, но там я не знаю, как это автоматизировать.
Я не пользуюсь convert (работа из консоли очень ограничивает возможности этой библиотеки, кроме того вы не можете определить как каком этапе ImageMagick "уходит в космос").
Мои пользователи не заливают мне файлы такого разрешения :). Поєтому дам рекомендации исходя из того как решал бы проблему я.
Поделим все на этапы:
1. Увеличьте в php максимальный предел загребаемого ОЗУ, примерно так
ini_set('memory_limit', '2048M');
set_time_limit(0);
2. Загрузите изображение в память
$magick_wand=NewMagickWand();
MagickReadImage($magick_wand,'my_big.tif');
3. Если эти этапы прошли, напишите прогу которая будет вырезать куски, этого я за Вас делать не буду.
Главное в во всем этом то, что вы можете видеть на каком шаге затык! Ну в крайнем случае RAM в комп добавте :). У меня на серваке 8G стоит, думаю он бы проглотил имидж в полтора гига.
Мои пользователи не заливают мне файлы такого разрешения :). Поєтому дам рекомендации исходя из того как решал бы проблему я.
Поделим все на этапы:
1. Увеличьте в php максимальный предел загребаемого ОЗУ, примерно так
ini_set('memory_limit', '2048M');
set_time_limit(0);
2. Загрузите изображение в память
$magick_wand=NewMagickWand();
MagickReadImage($magick_wand,'my_big.tif');
3. Если эти этапы прошли, напишите прогу которая будет вырезать куски, этого я за Вас делать не буду.
Главное в во всем этом то, что вы можете видеть на каком шаге затык! Ну в крайнем случае RAM в комп добавте :). У меня на серваке 8G стоит, думаю он бы проглотил имидж в полтора гига.
Понятно, будем пробовать,
хотя на моем сервере только 2мб памяти :(
Просто, я надеялся, что есть программное решение, позволяющее резать картинку на кусочки без создания ее полного образа в памяти.
Одна из таких программ у меня есть, но она вообще не имеет настроек и на выходе выдает jpeg с фиксированными параметрами компресии, но зато "стрижет" такие картинище на картинки очень быстро (за 1-3 минуты) и памяти почти не требует.
Результат нарезки:
www.kartaspb.ru
www.oblmap.spb.ru
Хотел переделать формат на gif/png с индексными палитрами и сжатием без потерь (думал, что будут получаться файлы меньшего размера и лучшего качества), но простого способа пока не нашел.
хотя на моем сервере только 2мб памяти :(
Просто, я надеялся, что есть программное решение, позволяющее резать картинку на кусочки без создания ее полного образа в памяти.
Одна из таких программ у меня есть, но она вообще не имеет настроек и на выходе выдает jpeg с фиксированными параметрами компресии, но зато "стрижет" такие картинище на картинки очень быстро (за 1-3 минуты) и памяти почти не требует.
Результат нарезки:
www.kartaspb.ru
www.oblmap.spb.ru
Хотел переделать формат на gif/png с индексными палитрами и сжатием без потерь (думал, что будут получаться файлы меньшего размера и лучшего качества), но простого способа пока не нашел.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Фотошопим на PHP