Pull to refresh

Comments 31

Спасибо!
Пошёл читать и тестить.
UFO just landed and posted this here
"Сдесь" и "матерриалы" портят оформление отличной идеи. За идею - двойное спасибо ;)
и еще "несколько 3-4 года", а также "результатиы, продалаем", "заметную", "чтоб", "собствнно".
Надо проверять хотя бы вордом, или гуглом, "потому что он исправляет слова, в которых больше одной ошибки" ©bash.
Спасибо за замечание, действительно забыл проверить на грамотность. Уже исправил.
да ничего ;) с кем не бывает.
Спасибо, интересно, мы тоже выбрали 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% делает фотографии чуть меньше и чуть лучше. К сожалению, перегнать фотошоп нам пока не удалось.
Adobe всегда славился своими конвертерами, тут уж ничего не поделать.
Согласен, но так нагляднее. В нашем деле не бывает правильной цифры :), шарпинг зависит и от размера фотографии чем меньше превьюшка - тем аккуратнее нужно наводить резкость.
Огромное спасибо! Проектируем фотохостинг и буквально позовчера встала именна эта проблема, проблема в качестве и четкости превьюшек.
Прямо по щучьему велению. :-)
о! обращаюсь к вам как к доблесным разработчикам в будущем великого фотохостинга:
1. не убирайте картинки, на которые идет большая нагрузка!
2. прикрутите статистику просмотров и т.п.
3. и апи, да
Вот сколько ни вглядывался, разницы между изображениями, кроме как с первым, не заметил...
Возможно, я выбрал не совсем удачную фотку, которая для меня ассоциируется с GNU/Linux-сообществом :). Тогда я попробую продемонстрировать разницу на примере фото Ричарда Столлмана:
Фото Ричарда Мэттью Столлмана, до шарпинга MagickWandФото Ричарда Мэттью Столлмана, после шарпинга MagickWand
Разницу можно увидеть в мелких деталях: борода, глаза, рот. Я специально для MagickWand поставил 100% качество, чтоб на разницу не влияла компрессия. Параметры Шарпинга те же: MagickSharpenImage($mgck_local,1,4)
Здорово, что хоть кто-то решился написать о данной библиотеке. Буквально только позавчера тут говорили о том, что PHP+GD1/2 стандартный вариант, но PHP+IM все же мощнее. Единственно что меня в MagickWand смещает это не всегда понятная документация (местами вообще было не ясно, что же имел в виду автор документации) и практически полное отсутсвие примеров. Ну и процедурный стиль конечно тоже немного напрягает.

Имхо, IM в рунете освещен не очень хорошо.

Автору спасибо. Мог бы, поставил бы плюс.
стиль процедурный, но подход объектно-ориентированный. Практически все методы используют id-шник созданного wand'а в качестве первого параметра. Это типично для нскоро портированных в ОО язык чисто-сишных API. Такая же ситуация в curl'е. Это нормально. кроме того несложно написать обёртку, выглядящю как нормальный OO API.

Кстати про работу с текстом и вектором в "классическом ImageMagick" (видимо имеется ввиду commnd-line интерфейс) автор обманывает: из коммандной строки convert умеет абсолютно всё, что умеет библиотека MagickWand.

собственно, я пользуюсь комманд-лайном - это позволяет одновременно и ворочать большие картинки и не выделять php для этого кучу памяти, которую если разрешить он потенциально может отъесть в других местах, не связанных с графикой (чего я не хочу [-: ).
Спасибо. Как-то раз заказчик как раз жаловался на качество превьюшек. Я не знал, что ему ответить и ссылался на ограничения технических средств. :) Теперь все встало на свои места.
UFO just landed and posted this here
о сенкс, про шарпинг актуально.
IM при ресайзе чуть быстрее на больших картинках (более 6000x6000 px), на маленьких (типа обоев на рабочий стол) разницы не заметил.

Вообще сравнивать phpThumbs и IM не совсем корректно, ибо thumbs использует IM если он установлен, и только в крайнем случае обращается к GD. Я, кстати, вообще не уверен, что он умеет шарпинг на чистом GD - не пробовал. (-:
кстати, очень жаль, что IM активно не развивается вот уже много лет. Активно - я под этим понимаю написание новых фильтров и улучшение удобства работы с утилитой convert (там очень неудобна для понимания система "гравитации" при нарезке изображений). Например очень не хватает фильтров, которые "вытягивают" недодержанные участки изображения или создают блики в ярких местах, итп.
А мы для Unsharp используем Unsharp Mask for PHP - которая замечательно работает с GD.

http://vikjavev.no/computing/ump.php
Не знал об этой библиотеке, спасибо что написали.

Это не функция движка GD, она написана на самом php и как вы, сами понимаете, она очень заметно проигрывает в скорости.

Я 100 раз сделал шарпинг с помощью Unsharp Mask for PHP вышеупомянутому фото - это заняло 17 секунд, аналогичная операция на MagickWand заняла 0,6 секунды (Почти в 30 раз медленее!). А если шарпить прийдется 640x480 тогда потеря производительности будет гораздо ощутимее.

Качество шарпинга с натяжкой можно стравнивать с MagickWand.
С качеством я поспешил делать выводы. Когда установил идентичные параметры шарпинга, "на-глаз", разницу с MagickWand не увидел.

Проблема останется только в производительности, упомянутой Вами, функции.
Как по мне, то документация не ахти, да и либа не самая адекватная (производительность на высоте но стабильность ...).
Например под Freebsd есть проект который использует ф-цию MagickPaintOpaqueImage, перенесли проект под Linux(ubuntu), перестало работать, оказалось не знает magickwand такую ф-цию MagickPaintOpaqueImage, далее пришло обновление и для фри, и те же пироги, все лягло, просто исчезла функция :(
UFO just landed and posted this here
Обновите ImageMagick или поставте MagickWand 1.0.6.

В новом ImageMagick, конфигуратор называется MagickWand-config а не Wand-config
Пожалуйста, подскажите, чем лучше нарезать на кусочки фиксированного размера (256x256) очень большую картинку (tiff) с разрешением 17002x19002 *750мб) точек (и еще одну картинку 27000x20000 н 1.56гб)
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 стоит, думаю он бы проглотил имидж в полтора гига.
Понятно, будем пробовать,
хотя на моем сервере только 2мб памяти :(
Просто, я надеялся, что есть программное решение, позволяющее резать картинку на кусочки без создания ее полного образа в памяти.
Одна из таких программ у меня есть, но она вообще не имеет настроек и на выходе выдает jpeg с фиксированными параметрами компресии, но зато "стрижет" такие картинище на картинки очень быстро (за 1-3 минуты) и памяти почти не требует.
Результат нарезки:
www.kartaspb.ru
www.oblmap.spb.ru
Хотел переделать формат на gif/png с индексными палитрами и сжатием без потерь (думал, что будут получаться файлы меньшего размера и лучшего качества), но простого способа пока не нашел.
Only those users with full accounts are able to leave comments. Log in, please.