Изменить размер изображения (image_lib), сохранить соотношение сторон, но масштабировать до МАЛЕНЬКОГО, которое ПРЕВЫШАЕТ как ширину, так и высоту - PullRequest
0 голосов
/ 18 марта 2012

Итак, я хочу взять квадратное изображение и изменить его размер до 300px * 400px (например).

Я хочу сохранить соотношение сторон, но чтобы изображение превышало или совпадало с обоими размерами. Таким образом, в случае квадратного исходного изображения результирующее изображение будет 400px * 400px.

Это имеет смысл? Я хочу этого, потому что тогда я продолжу обрезать изображение точно до 300px * 400px.

Настройка $config['maintain_ratio'] = false; искажает изображение.

Спасибо за любое просвещение.

1 Ответ

2 голосов
/ 18 марта 2012

Попробуйте это .... Это поможет ..

    if(file_exists('test.jpg'))
         unlink('test.jpg');

       $dest='test.jpg';


  $image='fg.jpg';

 $list=getimagesize($image);
 $width=$list[0];
  $height=$list[1];


   $newwidth=65;
    $newheight=95;



   $int_x=10;
 $int_y=0;




define( 'DESIRED_IMAGE_WIDTH', 65 );
define( 'DESIRED_IMAGE_HEIGHT', 95 );
$source_gdim = imagecreatefromjpeg($image);

$source_aspect_ratio = $width / $height;
$desired_aspect_ratio = DESIRED_IMAGE_WIDTH / DESIRED_IMAGE_HEIGHT;

 // For Wide Image
if ( $source_aspect_ratio > $desired_aspect_ratio )
  {
$temp_height = DESIRED_IMAGE_HEIGHT;
$temp_width = ( int ) ( DESIRED_IMAGE_HEIGHT * $source_aspect_ratio );
  }
  // For Tall Image
else
  {
  $temp_width = DESIRED_IMAGE_WIDTH;
   $temp_height = ( int ) ( DESIRED_IMAGE_WIDTH / $source_aspect_ratio );
   }


   $temp_gdim = imagecreatetruecolor( $temp_width, $temp_height );
  imagecopyresampled($temp_gdim,$source_gdim,0, 0,0, 0,$temp_width, $temp_height,$width, $height);


 $x0 = ( $temp_width - DESIRED_IMAGE_WIDTH ) / 2;
  $y0 = ( $temp_height - DESIRED_IMAGE_HEIGHT ) / 2;

  $desired_gdim = imagecreatetruecolor( DESIRED_IMAGE_WIDTH, DESIRED_IMAGE_HEIGHT );
    imagecopy($desired_gdim,$temp_gdim,0, 0,$x0, $y0,DESIRED_IMAGE_WIDTH, DESIRED_IMAGE_HEIGHT);


      imagejpeg( $desired_gdim,'test.jpg',100 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...