2012-03-08 5 views
1

Мне нужно изменить размер изображения 200 * 200 на 60 * 60 в rmagick без потери качества изображения. В настоящее время я делаю следующее для png изображенияИзменение размера изображения png с использованием rmagick без потери качества

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

Любой может дать мне несколько инструкций по изменению размера изображений png?

+1

PNG - формат без потерь, поэтому любая потеря качества является либо результатом алгоритмов imagemagik, либо просто тем фактом, что вы разрешаете разрешение в третьем, и это меняет ситуацию. –

+0

Действительно? Вы изменяете размер изображения с 200x200 = 40 000 до 60x60 = 3,600, то есть меньше, чем на десятую часть разрешения - и вы удивлены тем, что теряете качество изображения? –

+0

@ChrisLatta Вы правы; Я терпеть неудачу в разрешающей математике и делят размеры вместо количества пикселей. Десятая - это гораздо больше, чем третья. –

ответ

0

Вы изменяете размер изображения с 200x200 = 40 000 до 60x60 = 3,600 - то есть меньше, чем на десятую часть разрешения - и вы удивлены тем, что теряете качество изображения? Подумайте об этом так: можете ли вы взять 16x16 изображение и изменить его размер до 5x5 без потери качества? Это примерно то же, что вы пытаетесь сделать здесь.

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

С изображением 60х60 арт-дизайнера, имеющего более высокое качество, чем ваше, оно зависит от исходного размера изображения, от которого работает дизайнер. Например, если арт-дизайнер работал с изображением 800x800 и предоставил вам изображение 200x200, то также уменьшил исходное изображение 800x800 до 60x60 в PS, тогда изображение 60x60 будет лучше перекличка, чем тот, который у вас есть. Это связано с тем, что ваше изображение размером 60х60 прошло две потери качества: один - до 200x200, а второй - от 200x200 до 60x60. Обязательно это будет хуже, чем изображение, измененное по сравнению с оригиналом.

+0

нет, нет, арт-дизайнер дал мне два изображения, один из них - 200 * 200, а другой - 60 * 60. моя задача - позволить серверу загружать изображение с клиента, сохранять его и предоставлять пользователю 60 * 60 предварительный просмотр. Я сравнил загруженное изображение с orignal 200 * 200 (ну, использовал тот же метод img.write, чтобы хранить его на сервере), оба из них выглядят очень похожими, не обнаруживаются большие различия глазами, но при проверке генерируется 60 * 60 изображений, это действительно не хорошо, слово на изображении 200 * 200 было почти не распознано (ожидаемый 60 * 60 не такой), – Lion

+0

, поэтому я хочу найти лучший способ позволить изображению иметь лучший вид. – Lion

+0

Помните, что качество будет снижаться с экспоненциальной скоростью, а не линейной скоростью.Например, изображение с половиной качества/разрешения 200x200 не 100x100, это 141x141. 100x100 - одна четверть разрешения 200x200, а экспоненциальное уменьшение разрешения означает, что к тому времени, когда вы доберетесь до 60x60, это будет меньше одной десятой разрешения и, следовательно, качества. Я думаю, что вы получаете изображение 60х60 от своего арт-дизайнера, которое получается иначе, чем тот, который вы используете, т. Е. Ваш 60x60 претерпел два изменения и потери по качеству, тогда как другой - только один. –

0

Вы можете преобразовать png в векторное изображение, изменить размер вектора до 60x60, а затем преобразовать вектор в png. Почти без потерь.

Смежные вопросы