用PHP旋转图像

时间:2015-08-24 07:23:10

标签: php

我制作了一个应用程序,允许用户拍摄照片,然后将其存储在在线服务器上。我的问题是,取决于手机,一些图片是旋转接收的。

这是我的php文件:(我收到base64编码的图片)

<?php

    $file_path = "photos/";
    $image = $_REQUEST['base64'];
    $name=$_REQUEST['ImageName'];

    // Decode Image
    $binary=base64_decode($image);

    $success = file_put_contents($file_path.$name, $binary); 

    if($success === false) {
       echo "Couldn't write file";
    } else {
       echo "Wrote $success bytes";
    }
    echo $name;
 ?>

我尝试使用此代码,但它不会改变我的图片方向(也许是因为我发送了错误的参数?)

$exif = exif_read_data($binary);
$ort = $exif['IFD0']['Orientation'];
    switch($ort)
    {
        case 1: // nothing
        break;

        case 2: // horizontal flip
            $binary->flipImage($public,1);
        break;

        case 3: // 180 rotate left
            $binary->rotateImage($public,180);
        break;

        case 4: // vertical flip
            $binary->flipImage($public,2);
        break;

        case 5:// vertical flip + 90 rotate right
            $binary->flipImage($public, 2);
                $binary->rotateImage($public, -90);
        break;

        case 6: // 90 rotate right
            $binary->rotateImage($public, -90);
        break;

        case 7: // horizontal flip + 90 rotate right
            $binary->flipImage($public,1);    
            $binary->rotateImage($public, -90);
        break;

        case 8:    // 90 rotate left
            $binary->rotateImage($public, 90);
        break;
    }

我应该改变什么想法? 如果这听起来像是一个愚蠢的问题,我很抱歉,但我是php的新手。

1 个答案:

答案 0 :(得分:2)

我会使用GD图像处理库进行旋转。这是一个例子:

// Load the original file into GD
$path = __DIR__ . '/original.png';
$original = imagecreatefrompng($path);

// Rotate the image by 90 degrees
$rotated = imagerotate($original, 90, 0);

// Save the rotated image
imagepng($rotated, __DIR__ . '/rotated.png');