Некоторые видели у меня под статьями модуль от 2leep.com . Это несколько напарсенных и отресайзеных картинок. Мне очень нравится такой модуль, но не очень нравится как он работает от 2leep.com . Я подумал, что написать плагинчик для WordPress, который бы брал картинки с постов, ресайзил бы их и выводил не должно быть сложно. Функционал у него представляется очень широким.
К примеру можно использовать для вывода похожих записей, в зависимости от тематики в этот модуль можно удобно прятать тизеры. При смене дизайна – не нужно в ручную править все картинки в статьях. Ну вобщем много вариантов. Но и проблем для меня хватало. Главная, что я совершенно не представлял, как на PHP можно работать с картинками. Плагин я в итоге написал. На всё про всё ушло дня три. Некий промежуточный резальтат уже работает тут на блоге. Через какое то время, если дойдут руки, я его доведу до релиза и тогда выложу. То что получается мне очень нравится. Картинки резайзятся, хранятся в отдельной папке, хостинг после того как всё отресайзися практически не нагружается.
Отдельно я написал скрипт для парсинга картинок с других сайтов. За маркер брал RSS ленту. На основе этого скрипта можно наделать сплогов, как на Yahoo Pipes например. В общем задел не плохой. А сегодня покажу функцию, которая берет урл картинки, подсасывает картинку, ресайзит и сохраняет.
В основном рассчитано, что эта функция берет ростовые фоты. То есть по ширине берется целиком фотка, по высоте обрезается, чтобы сохранить масштабирование.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
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; } |
Kumar 2012-12-16
http://true-coder.ru/php/toolkit-dlya-resajza-i-kropa-izobrazhenij-na-php.html
Это уже вторая версия сего продукта на том же ресурсе.