Некоторые видели у меня под статьями модуль от 2leep.com . Это несколько напарсенных и отресайзеных картинок. Мне очень нравится такой модуль, но не очень нравится как он работает от 2leep.com . Я подумал, что написать плагинчик для WordPress, который бы брал картинки с постов, ресайзил бы их и выводил не должно быть сложно. Функционал у него представляется очень широким.
К примеру можно использовать для вывода похожих записей, в зависимости от тематики в этот модуль можно удобно прятать тизеры. При смене дизайна – не нужно в ручную править все картинки в статьях. Ну вобщем много вариантов. Но и проблем для меня хватало. Главная, что я совершенно не представлял, как на PHP можно работать с картинками. Плагин я в итоге написал. На всё про всё ушло дня три. Некий промежуточный резальтат уже работает тут на блоге. Через какое то время, если дойдут руки, я его доведу до релиза и тогда выложу. То что получается мне очень нравится. Картинки резайзятся, хранятся в отдельной папке, хостинг после того как всё отресайзися практически не нагружается.
Отдельно я написал скрипт для парсинга картинок с других сайтов. За маркер брал RSS ленту. На основе этого скрипта можно наделать сплогов, как на Yahoo Pipes например. В общем задел не плохой. А сегодня покажу функцию, которая берет урл картинки, подсасывает картинку, ресайзит и сохраняет.
В основном рассчитано, что эта функция берет ростовые фоты. То есть по ширине берется целиком фотка, по высоте обрезается, чтобы сохранить масштабирование.
[cc lang=”php”]function azzrael_resize( $imgname, $outfile ){
// новые размеры
$neww = 200;
$newh = 200;
// качество выходного jpeg
$quality = 80;
// эту функцию не показываю, она просто чекает доступность урла картинки
// я это делаю через хедеры курла
// но можно делать как удобно
if( !is_url_ready( $imgname ) ) return false;
$size = getimagesize( $imgname );
switch($size[“mime”]){
case “image/jpeg”:
$im = imagecreatefromjpeg($imgname); //jpeg file
break;
case “image/gif”:
$im = imagecreatefromgif($imgname); //gif file
break;
case “image/png”:
$im = imagecreatefrompng($imgname); //png file
break;
default:
$im=false;
break;
}
if( !$im ) return false;
$width_orig = $size[0];
$height_orig = $size[1];
$ratio_orig = $width_orig/$height_orig;
if ( $neww/$newh > $ratio_orig ) {
$new_height = $neww/$ratio_orig;
$new_width = $neww;
} else {
$new_width = $newh*$ratio_orig;
$new_height = $newh;
}
// поэкспериментируйте, эти коэффициенты определяют какой кусок исходника масштабировать
// а какой обрезать – в этом вся умность функции собственно
// но и нагрузка на GD соответственно
$ky = 0;
$kx = 0.5
$x_mid = $new_width*$kx;
$y_mid = $new_height*$ky;
$process = imagecreatetruecolor(round($new_width), round($new_height));
$thumb = imagecreatetruecolor($neww, $newh);
imagecopyresampled($process, $im, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig);
imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($neww*$kx)), ($y_mid-($newh*$ky)), $neww, $newh, $neww, $newh);
imagejpeg($thumb, $outfile, $quality);
imagedestroy($process);
imagedestroy($im);
return true;
}[/cc]
14 апреля 2011 |
Раздел: Программирование |
Метки: php
Есть прекрасный тулкит для ресайза изображений на php/ Он также содержит, кроме всего прочего, функционал для “умного” создания миниатюр.
http://true-coder.ru/php/toolkit-dlya-resajza-i-kropa-izobrazhenij-na-php.html
Это уже вторая версия сего продукта на том же ресурсе.