Как мне получить новую ширину и высоту, установленную после поворота изображения?
$ps['product_angle'] = 77; //Could be any angle $filename = 'test.png' //filename to the original product list($source_width, $source_height) = getimagesize($filename); $source_image = imagecreatefromjpeg($filename); $angle = $ps['product_angle']; if (intval($angle) <> 0) { $source_image = imagerotate($source_image, 360-$angle, imageColorAllocateAlpha($source_image, 255, 255, 255, 127)); } $ps['source_image'] = $source_image;
Я хочу это, потому что хочу сделать изменение размера изображения на основе созданного выше изображения. ( $ps['source_image']
)
//If I do an image list($source_width, $source_height) = getimagesize($filename); $dest_width = (int)$ps['product_width']; $dest_height = (int)$ps['product_height']; //Resize source-image to new width and height //But this width and height are incorrect because they are //set before image is rotated and often the image is just "cut off" // imagecopyresized($dest_image, $ps['source_image'], 0, 0, 0, 0, $dest_width, $dest_height, $source_width, $source_height);
Используйте функции imagesx()
и imagesy()
чтобы получить ширину и высоту изображения, загруженного или созданного в памяти с помощью GD.
$filepath = '/tmp/1.jpg'; $size = getimagesize($filepath); echo('Image dimensions returned by getimagesize() : '.$size[0].'x'.$size[1]." pixels\n"); $img = imagecreatefromjpeg($filepath); $width = imagesx($img); $height = imagesy($img); echo('Dimensions returned by imagesx() and imagesy(): '.$width.'x'.$height." pixels.\n"); $angle = 60; $dst = imagerotate($src, $angle, imageColorAllocateAlpha($src, 255, 255, 255, 127)); $width = imagesx($dst); $height = imagesy($dst); echo('Dimensions of the rotated image: '.$width.'x'.$height." pixels.\n");
Вы можете сделать это с помощью: http://php.net/manual/en/function.getimagesize.php , например:
<?php $size = getimagesize($filename); $fp = fopen($filename, "rb"); if ($size && $fp) { header("Content-type: {$size['mime']}"); fpassthru($fp); exit; } else { // error } ?>