|
|
|
| Добрый день.
Вобщем пишу скрипт, который изменяет размер изображения, и сохраняет его в файл.
Делаю так:
<?
$image_name="atomic_kitten_orig.jpg";
$simg=imageCreateFromJpeg($image_name);
$sw=imageSX($simg);
$sh=imageSY($simg);
$w=190;
$h=190;
$nimg=imageCreate($w, $h);
imageCopyResampled($nimg, $simg, 0, 0, 0, 0, $w, $h, $sw, $sh);
imageJpeg($nimg, "new.jpg", 90);
imageDestroy($nimg);
imageDestroy($simg);
?>
|
В итоге изображение действительно сжимется, но при этом теряет цветность, и вобще качество ухудшается сильно.
Вот результат работы:
Исходное изображение:
http://lineradio.ru/lineradio/atomic_kitten_orig.jpg
Результат уменьшения:
http://lineradio.ru/lineradio/new.jpg
Как будто половина цветов выбросилось кудато.
Что нужно сделать, чтобы картинка получалась полноцветной. Кто знает? | |
|
|
|
|
|
|
|
для: Dr Lines
(25.08.2008 в 12:12)
| | А попробуйте перед imageCopyResampled вставить функцию imagetruecolortopalette($img,true,250); | |
|
|
|
|
|
|
|
для: mehelson
(25.08.2008 в 12:34)
| | Спасибо, это помогло.
Вот результат: http://lineradio.ru/lineradio/new2.jpg
Но конечно, получилось не так идеально, как это делает граффический редактор Corel.
Так выглядит после сжатия им (для сравнения):
http://lineradio.ru/lineradio/corel_rezult.jpg
А хотелось бы получать именно такой результат.
Как я понял, возможности стандартных функций PHP не позволяют добиться качественного результата при работе с графикой. (или может я чегото не знаю) Может есть специальные расширения для дижка PHP или спец wab приложения , которые специализированны для качественной обработки графики?
Если кто знает поделитесь пожалуйста .. | |
|
|
|
|
|
|
|
для: Dr Lines
(25.08.2008 в 13:10)
| | Графические редаторы при изменениях размера изображения используют фильтры, а также различные математические модели (эти способы вы можете увидеть в списке редактора), а РНР... Можете попробовать после изменения изображения в РНР применить к нему фильтр, например, легкое размытие (blur). | |
|
|
|
|
|
|
|
для: sim5
(25.08.2008 в 13:27)
| | Вы имеете ввиду фильтр в настройках стиля изображения при выводе в браузер?
если да, то такой способ для меня не приемлем. | |
|
|
|
|
|
|
|
для: Dr Lines
(25.08.2008 в 13:35)
| | Все, уже нашел интересную статейку про фильтры в PHP
http://www.proklondike.com/contentview.php?content=398
=)
спасибо всем за помощь. | |
|
|
|
|
|
|
|
для: Dr Lines
(25.08.2008 в 13:35)
| | Я имею ввиду функцию GD imagefilter() или imageconvolution(). | |
|
|
|
|
|
|
|
для: Dr Lines
(25.08.2008 в 12:12)
| | ...еще попробуйте вместо ImageCreate () использовать ImageCreateTrueColor (); | |
|
|
|
|
|
|
|
для: Le bien
(25.08.2008 в 14:46)
| | Да, полностью поменяло результат в лучшую сторону.
вместо
imageСreate() использовал imageCreateTrueColor()
эту imageTrueColorTopAlette() удалил. Она уже не нужна.
Но так как изображение при сжатии становится немного размытым, применил резкость так:
$matrix = array(array(-1,-1,-1), array(-1,16,-1), array(-1,-1,-1));
imageconvolution($nimg, $matrix, 8, 0);
|
И результат просто радует:
http://lineradio.ru/lineradio/new3.jpg | |
|
|
|
|
|
|
|
для: Dr Lines
(25.08.2008 в 14:55)
| | А если еще добавить это:
imageFilter($nimg, IMG_FILTER_SMOOTH, 9);
|
то результат почти на 100% повторяет тот что получился в графическом редакторе.
кому интересно, то вот для сравнения:
PHP: http://lineradio.ru/lineradio/new4.jpg
Corel Photo Paint: http://lineradio.ru/lineradio/corel_rezult.jpg
чесно говоря вобще отличий не видно. | |
|
|
|
|
|
|
|
для: Dr Lines
(25.08.2008 в 15:19)
| | Весьма занятно, никогда столь глубоко не копал - спасибо =) | |
|
|
|