Gd Library翻转图像并保存

时间:2014-06-25 11:22:43

标签: php jquery gd

我正在使用PHP GD库来翻转图像,然后保存翻转的图像。但是我能够成功翻转图像,但我不知道如何用文件夹中的其他名称保存它。我的代码是

$filename = '324234234234.jpg';
header('Content-type: image/jpeg');
$im = imagecreatefromjpeg($filename);
imageflip($im, IMG_FLIP_VERTICAL);
imagejpeg($im);

2 个答案:

答案 0 :(得分:1)

您需要将第二个参数传递给imagejpeg($ im)调用,并使用您要存储的文件的路径。

imagejpeg($im, 'path/to/new/file.jpg');

http://php.net/manual/en/function.imagejpeg.php

答案 1 :(得分:0)

查看imagejpeg的文档,其中解释了与$filename相关的第二个参数:

  

bool imagejpeg(资源 $ image [,字符串 $ filename [, int $ quality]])

     

将文件保存到的路径。如果未设置或 NULL ,原始图像流将直接输出。

所以只需添加新文件名作为第二个参数,就像这样;假设新名称的名称为new_filename.jpg。同时注释掉或完全删除header行,这样您就不会将图像输出到浏览器,而是将其保存到文件中,因此不需要header

$filename = '324234234234.jpg';
// header('Content-type: image/jpeg');
$im = imagecreatefromjpeg($filename);
imageflip($im, IMG_FLIP_VERTICAL);
imagejpeg($im, 'new_filename.jpg');

另请注意,尽管imageflip很好用,但它仅适用于PHP 5.5和更高;它不会在PHP 5.4或更低版本中提供:

  

(PHP 5> = 5.5.0)

     

图像翻转 - 使用给定模式翻转图像

因此,如果您想在PHP 5.4或更低版本中使用它,您需要创建逻辑以在代码中自行翻转它或使用a function like this。它只是水平翻转所以你必须调整它才能垂直翻转,但是在这里张贴以便你有一些东西需要探索。如果需要,可以使用:

/**
 * Flip (mirror) an image left to right.
 *
 * @param image  resource
 * @param x      int
 * @param y      int
 * @param width  int
 * @param height int
 * @return bool
 * @require PHP 3.0.7 (function_exists), GD1
 */
function imageflip(&$image, $x = 0, $y = 0, $width = null, $height = null)
{
    if ($width  < 1) $width  = imagesx($image);
    if ($height < 1) $height = imagesy($image);
    // Truecolor provides better results, if possible.
    if (function_exists('imageistruecolor') && imageistruecolor($image))
    {
        $tmp = imagecreatetruecolor(1, $height);
    }
    else
    {
        $tmp = imagecreate(1, $height);
    }
    $x2 = $x + $width - 1;
    for ($i = (int) floor(($width - 1) / 2); $i >= 0; $i--)
    {
        // Backup right stripe.
        imagecopy($tmp,   $image, 0,        0,  $x2 - $i, $y, 1, $height);
        // Copy left stripe to the right.
        imagecopy($image, $image, $x2 - $i, $y, $x + $i,  $y, 1, $height);
        // Copy backuped right stripe to the left.
        imagecopy($image, $tmp,   $x + $i,  $y, 0,        0,  1, $height);
    }
    imagedestroy($tmp);
    return true;
}