php旋转并保存图像 - 没有做任何事情?

问题描述 投票:3回答:4

我正在尝试使用以下代码来旋转和保存图像,但它似乎没有做任何事情,也没有吐出任何错误?

这是我的代码:

header('Content-type: image/jpeg');

$path   = '/Volumes/yoda/websites/zepel.website.2013/images/blog/display';
$file   = '10.jpg';
$degrees    = 90;

$filename   = $path."/".$file;

$source     = imagecreatefromjpeg($filename) or notfound();
$rotate     = imagerotate($source,$degrees,0);

imagejpeg($filename,$rotate);

imagedestroy($source);
imagedestroy($rotate);

任何帮助将不胜感激。我的图像文件夹也设置为777。我似乎无法弄清楚为什么它不起作用?

php image image-rotation
4个回答
3
投票

给这个旋转:(测试)

<?php

$path   = '/Volumes/yoda/websites/zepel.website.2013/images/blog/display';
$file   = '10.jpg';
$degrees = 90;

header('Content-type: image/jpeg');

$filename = $path . "/" .$file;

$source = imagecreatefromjpeg($filename) or notfound();
$rotate = imagerotate($source,$degrees,0);

imagejpeg($rotate);
imagedestroy($source);
imagedestroy($rotate);

?>

1
投票

问题出在imagejpeg函数中。它应该像这样:

header('Content-type: image/jpeg');
imagejpeg($rotate);

chek imagerotate manual link

编辑

问题是,你是在浏览器中显示图像并算法另一个文本,这就是为什么你得到那个“奇怪的文本”,尝试保存图像:

imagejpeg($rotate, "test.jpeg");

并删除标题('Content-type:image / jpeg');


0
投票
You can use this for rotate image

$image = 'images/me.jpg';



// Set the path to the image to rotate
$input_image = $image;
//How many degrees you wish to rotate
$degrees = 90;
// Create the canvas

            $info = getimagesize($image);

            if($info['mime']) {
                if($info['mime']=='image/gif'){
                    $canvas = imagecreatefromgif($image);
                    // Rotates the image
                    $rotate = imagerotate( $canvas, $degrees, 0 ) ;
                    // Save the image as output.jpg
                    imagegif( $rotate, $image );
                }elseif($info['mime']=='image/jpeg'){
                    $canvas = imagecreatefromjpeg($image);
                    // Rotates the image
                    $rotate = imagerotate( $canvas, $degrees, 0 ) ;
                    // Save the image as output.jpg
                    imagejpeg( $rotate, $image );

                }elseif($info['mime']=='image/png'){
                    $canvas = imagecreatefrompng($image);
                    // Rotates the image
                    $rotate = imagerotate( $canvas, $degrees, 0 ) ;
                    // Save the image as output.jpg
                    imagepng( $rotate, $image );
                }
            }
// Clear the memory of the tempory image
imagedestroy( $canvas );

?>
<img src="<?=$image?>">

0
投票

这对我有用,(更改为png)如果标题数据尚未消失,您可以使用标题。如果标题已用完,请使用“/>如果您没有添加时间,您的浏览器可能只显示缓存版本,而不是您刚刚更新的旋转版本。请注意使用lastmod会导致更高的页面加载时间,尤其是图像很大,但如果用户想看看发生了什么,你将不得不使用它。

$rotateFilename="path to file (not http)";
$degrees = 90;

if($fileType == 'jpg' || $fileType == 'jpeg'){
 // if header data has not gone out yet...  header('Content-type: image/jpeg');
$source = imagecreatefromjpeg($rotateFilename);
 // Rotate
$rotate = imagerotate($source, $degrees, 0); //do the deed
imagejpeg($rotate,$rotateFilename); //saves the file


// Free the memory
imagedestroy($source);
imagedestroy($rotate);
}
© www.soinside.com 2019 - 2024. All rights reserved.