X

GD функция горизонтального поворота картинки

Понадобилось повернуть картинку, а точнее отобразить сверху вниз. Полез в гугл и не нашел 🙂 Очень удивился ведь она совсем не сложная, и вроде как востребованная...

Скорость её работы мне не сильно нужна была, поэтому использовал школьный алгоритм поворота массива:

    <?php  
      
        ini_set('memory_limit', 128 * 1024 * 1024);  
      
        function rgb($rgb) {  
            $r = ($rgb >> 16) & 255;  
            $g = ($rgb >> 8) & 255;  
            $b = $rgb & 255;  
            return array($r,$g,$b);  
        }  
      
        function rotate($file, $quality=60, $filename='') {  
            $ret=false;  
            if (function_exists('imagecreatefromjpeg') && ($im = imagecreatefromjpeg($file))) {  
                $wx = imagesx($im); $wy=imagesy($im);  
                $ret = imagecreatetruecolor($wx,$wy);  
                for ($x=0;$x<$wx; $x++) for ($y=0;$y<$wy; $y++) {  
                  $rgb = rgb(imagecolorat($im, $x,$wy-1-$y));  
                  $rgb = imagecolorallocate($ret, $rgb[0], $rgb[1], $rgb[2]);  
                  imagesetpixel($ret, $x, $y, $rgb);  
                }  
                imagestring($ret, 2, 2, 1, 'sfield.org.ua', imagecolorallocate($ret, 25, 25, 25));  
            }  
            if(!$filename) header("Content-type: image/jpeg");  
            if (function_exists('imagejpeg')) imagejpeg($ret, $filename, $quality);  
        }  
      
        rotate('image.jpg',60);  
      
    ?>

На выходе получаем картинку отраженную по вертикали. Для горизонтали (поворота слева направо) думаю не составит сложности переделать 😉

Категории: PHP
Тэги: gdimage