Зеркалирование картинки

LEXAlForpostl

Мой дом здесь!
Регистрация
21 Май 2008
Сообщения
766
Реакции
228
Здравствуйте.
Подскажите, пожалуйста, как называется функция зеркалирования картинки по горизонтали?
 
Я могу и ошибаться, но простой функции, которая делает зеркало на php нету. Но вот нашел примерчик, может он тебе поможет:
PHP:
<?php
   define("IMAGE_FLIP_HORIZONTAL",    1);
   define("IMAGE_FLIP_VERTICAL",    2);
   define("IMAGE_FLIP_BOTH",    3);
 function ImageFlip($imgsrc, $type)
 {
   $width = imagesx($imgsrc);
   $height = imagesy($imgsrc);
   $imgdest = imagecreatetruecolor($width, $height);
   switch( $type )
       {
       // mirror wzgl. osi
       case IMAGE_FLIP_HORIZONTAL:
           for( $y=0 ; $y<$height ; $y++ )
               imagecopy($imgdest, $imgsrc, 0, $height-$y-1, 0, $y, $width, 1);
           break;
       case IMAGE_FLIP_VERTICAL:
           for( $x=0 ; $x<$width ; $x++ )
               imagecopy($imgdest, $imgsrc, $width-$x-1, 0, $x, 0, 1, $height);
           break;
       case IMAGE_FLIP_BOTH:
           for( $x=0 ; $x<$width ; $x++ )
               imagecopy($imgdest, $imgsrc, $width-$x-1, 0, $x, 0, 1, $height);
           $rowBuffer = imagecreatetruecolor($width, 1);
           for( $y=0 ; $y<($height/2) ; $y++ )
               {
               imagecopy($rowBuffer, $imgdest  , 0, 0, 0, $height-$y-1, $width, 1);
               imagecopy($imgdest  , $imgdest  , 0, $height-$y-1, 0, $y, $width, 1);
               imagecopy($imgdest  , $rowBuffer, 0, $y, 0, 0, $width, 1);
               }
           imagedestroy( $rowBuffer );
           break;
       }
   return( $imgdest );
 }
 ?>
 
Подошло.
Только есть одно НО.
Исходный размер jpeg картинки 15 КБ, при повороте получается размер картинки 23 КБ. Почему увеличивается размер более чем на 50%? Возможно ли этого избежать?
 
Это не сжатие, а изменение размера :)
 
а в каком формате изображение?
подозреваю, что JPG
 
Подошло.
Только есть одно НО.
Исходный размер jpeg картинки 15 КБ, при повороте получается размер картинки 23 КБ. Почему увеличивается размер более чем на 50%? Возможно ли этого избежать?

когда сохраняешь картинку в jpg, 3й параметр функции imagejpeg() это качество картинки от 0 до 100, по умолчанию используется ~75, поставь меньше и размер картинки соответственно уменьшится.

Либо же при повороте последовательность пикселов меняется таким образом, что алгоритм сжатия выдает больший размер, причин может быть много (хотя 50% размера от этого конечно не может быть, но в пределах 2-5% вполне вероятно)
 
Пытаюсь выполнить:
PHP:
imagejpeg(ImageFlip('old_im.jpg', 1),"1.jpg");
Однако, новый файл с изображением не создаётся.
 
Назад
Сверху