【问题标题】:php rotate and save image - not doing anything?php 旋转并保存图像 - 什么都不做?
【发布时间】:2013-06-11 03:31:29
【问题描述】:

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

这是我的代码:

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。我似乎无法弄清楚为什么它不起作用?

【问题讨论】:

  • header('Content-type: image/jpeg'); 的位置很重要。在下面尝试我的答案,经过测试并且可以正常工作。

标签: php image image-rotation


【解决方案1】:

试一试:(已测试)

<?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);

?>

【讨论】:

  • 我把它改成这样,我仍然得到这样的输出:����JFIF��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v80), default质量��C等等..
  • 我的旋转脚本在一个函数中,这会导致它中断吗?
  • @SoulieBaby 您的服务器或脚本某处存在问题。就像我说的,上面的代码在我运行 PHP 5.2.3 的服务器上成功测试
  • 好的,我已经解决了,我也在使用joomla,所以我不得不使用Joomla的方式来添加内容类型的标题.. $document =& JFactory::getDocument() ; $document->setMimeEncoding('image/jpeg');非常感谢您的帮助:)
  • @SoulieBaby 好的,很高兴听到它成功了,干杯,不客气。
【解决方案2】:

问题出在 imagejpg 函数中。 应该是这样的:

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

chek imagerotate 手册link

编辑

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

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

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

【讨论】:

  • 我现在得到这样的输出:����JFIF��>CREATOR: gd-jpeg v1.0(使用 IJG JPEG v80),默认质量 ��C $。 ",#(7),01444'9=82<.342 br.>
  • 这很酷,是它自己的图像.. 以另一种格式.. 你需要把 header('Content-type: image/jpeg');在 imagejpeg 函数之前..
【解决方案3】:
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?>">

【讨论】:

    【解决方案4】:

    这对我有用,(更改为 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);
    }
    

    【讨论】:

    • 如果header已经出,使用" />
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2012-06-30
    • 1970-01-01
    • 2017-06-08
    • 2017-02-03
    • 1970-01-01
    相关资源
    最近更新 更多