какими средствами можно уменьшить картинку по размеру при этом сохранить качество? есть картинка 800х800, ее нужно программно сжать до 250х250 пробовал стандартный resize пробовал wideimage получается отвратное качество не пробовал imagic - не смог пока настроить на локале, попробую на живом хосте. фактически я понимаю что ее нужно "уплотнить", сделать размер 250 но увеличить количество пикселей вместо 100 у оригинала в например 200 на уменьшенном... какие средства такое умеют?
1. Какая картинка? Формат графический 2. Что в вашем понимании - сохранение качества? 3. Стандартный resize имеется ввиду gd2 библиотека? Покажите примеры вашего кода?
1 картинка jpg, 96dpi 2 в моем понимании сохранение качества это отсутствие жуткой размытости в маленькой картинке при приближении. мне даже интересно стало как браузер "впихивает" картинку в размер 250х250 при задании простого css whidth/height. Он же берет исходную, сжимает ее в размер по при этом сохраняет количество точек? и если приближать ее то качество видим хорошее. то есть в моем понимании (тут поправьте) мне нужно создать картинку 250х250 ~250dpi и в нее впихнуть исходник... Вот какой функцией можно задать разрешение картинки? 3 стандартный да, GD2, и wideimage - imagecopyresampled() из примера официальной документации - код стер ибо совсем получается печально даже с качеством 100 - wideimage :: load($this_img) -> resize($img_width, $img_height, $img_rule) -> saveToFile("wide".$new_name); - тут немного симпотичнее но далеко от приличия imagick запустил на сервере, но тоже не айс, как блин количество точек задать
т е Вы надеетесь на фуллХД мониторе увеличить картинку 250х250 и увидеть четкое изображение? изображение 250х250 может быть качественным, только если занимает на экране 250х250 px
я надеюсь что понятие ширина и количество точек в этой ширине ppi это разные вещи и этим можно оперировать ))) зря надеюсь? ))) как браузер "впихивает" картинку в масштаб? если приближаешь картинку он же не предлагает тебе при каждом приближении картинку уменьшенную от исходника на 10% меньше чем превьюшка 250х250 пока не дойдет до 800х800 ?
упрощаем задачу. Как уменьшить изображение, при этом получить качество идентичное масштабированному браузером? есть две картинки 2.jpg 800х800 и уменьшенная 2-2.jpg Код (Text): echo "<img src='2.jpg' style='width: 260px; height: 260px;'>"; echo "<img src='2-2.jpg'>"; 2-2.jpg уменьшалась несколькими способами, уже и imagic разные варианты пробую и все равно две картинки рядом сильно отличаются друг от друга, особенно это видно если на картинке текст какой то есть 1 - исходный вжатый в стили, далее 4 разных варианта imagic наиболее симпотично получился тортик второй справа, это обычный имагик ресайз с фильтром Ланцоша (слово то какое, прям ка левиоса))) но исходник удачный, на картинках где качество исходника выше в 3 и более раз вообще треш...
Главная ошибка в понимании п 2. Прочтите что такое dpi. Если у вас 96dpi, никто не сможет чудесным образом сделать из нее 300dpi. Любой браузер при увеличении картинки больше ее реальных размеров обязательно ухудшает качество, как и любой просмотрщик графических файлов. Чудес не бывает... Другое дело - что возможно вы вообще не с той стороны к проблеме подходите. Вы опишите конкретно что вы хотите?
я выше уже наглядно показал в чем задача мы не увеличиваем картинку, я не прошу браузер или php увеличить мне картинку и сделать еще и качественной. Я прошу ее уменьшить и что бы качество было идентичное тому, как делает это браузер загоняя картину в style
1. Для gd2, для jpg можно выставлять параметр качества, по умолчанию вроде на 75% стоит, поставьте 100 2. Браузер "загоняя в styke" ничего не делает с картинкой физически, просто масштабирует 3. Для векторных изображений нет понятия качества, там масштабирование в принципе хоть до ьесконечности
мысль хорошая, только на сколько я понял в ходе экспериментов, тот же imagic не делает вектора из jpg, он всего то меняет формат файла с jpg на svg. Я могу тем же корелом растрировать jpg получить svg и с ним уже играться, результат уже интереснее по четкости картинки. А вот как это с помощью php можно сделать не соображу ((( короче: идеальное враг хорошего... пока более менее подходит вариант с ресайз имагик ланцош. Буду делать дальше то, что идет, а по конверту если придут дальше мысли вернусь к функции.. Спасибо! --- Добавлено --- вот еще момент, объясните плиз по imagick $im->setImageCompressionQuality(100); $im->setImageCompressionQuality(80); $im->setImageCompressionQuality(70); если их делать последовательно до уничтожения $im, как он делает, % от оригинала, или % от предыдущего? тоесть в последней строке 70% будут от исходника, или от 80% ?