Модуль от 2leep.com

Модуль от 2leep.com

Некоторые видели у меня под статьями модуль от 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 с GD”

  1. Kumar 16 декабря, 2012

    Есть прекрасный тулкит для ресайза изображений на php/ Он также содержит, кроме всего прочего, функционал для “умного” создания миниатюр.
    http://true-coder.ru/php/toolkit-dlya-resajza-i-kropa-izobrazhenij-na-php.html

    Это уже вторая версия сего продукта на том же ресурсе.

Есть что сказать по теме статьи? Пожалуйста - пишите!