php裁图之后变成横向的,PHP图像裁剪旋转图像

我正在创建一个允许人们上传照片的移动应用程序,但是我在使用您可以在此处找到的图像操纵器类调整图像大小时出现问题

https://gist.github.com/philBrown/880506.

我的问题是,当我通过将手机保持在纵向模式拍照时,图像向右旋转90度.当我以横向模式拍照时,一切都很顺利.

这是我的裁剪PHP代码:

$manipulator = new ImageManipulator($_FILES['Filedata']['tmp_name']);

$width = $manipulator->getWidth();

$height = $manipulator->getHeight();

$centreX = round($width / 2);

$centreY = round($height / 2);

// our dimensions will be 600x450

$x1 = $centreX - 300; // 600 / 2

$y1 = $centreY - 225; // 450 / 2

$x2 = $centreX + 300; // 600 / 2

$y2 = $centreY + 225; // 450 / 2

// center cropping to 600x450

$newImage = $manipulator->crop($x1, $y1, $x2, $y2);

// rotate 90 degrees to the right

$imageResource = $newImage->getResource();

$angle = '90'; // in degrees

$fileName = "../file_upload_img/43/" . $random_file_name . $_FILES["Filedata"]["name"];

$rotatedImage = imagerotate($imageResource, $angle);

imagejpeg($rotatedImage, $fileName, 95);

// saving file to uploads folder

$manipulator->save("../file_upload_img/43/" . $random_file_name . $_FILES["Filedata"]["name"]);

如何确保以纵向模式拍摄的照片在裁剪时不会旋转?

编辑*

upload.php代码:

require_once(__DIR__ . '/../includes/ImageManipulator.php');

require_once(__DIR__ . '/../init/db/conn.php');

ob_start();

echo "

";

print_r($_FILES);

print_r($_GET);

print_r($_POST);

echo "

";

print_r("file type: " . $_FILES["Filedata"]["type"]);

$allowedExts = array("gif", "jpeg", "jpg", "png");

$temp = explode(".", $_FILES["Filedata"]["name"]);

$extension = end($temp);

if ((($_FILES["Filedata"]["type"] == "image/gif")

|| ($_FILES["Filedata"]["type"] == "image/jpeg")

|| ($_FILES["Filedata"]["type"] == "image/jpg")

|| ($_FILES["Filedata"]["type"] == "image/pjpeg")

|| ($_FILES["Filedata"]["type"] == "image/x-png")

|| ($_FILES["Filedata"]["type"] == "image/png"))

&& ($_FILES["Filedata"]["size"] < 9999999999)

&& in_array($extension, $allowedExts)) {

if ($_FILES["Filedata"]["error"] > 0) {

echo "Return Code: " . $_FILES["Filedata"]["error"] . "
";

}

else {

echo "Upload: " . $_FILES["Filedata"]["name"] . "
";

echo "Type: " . $_FILES["Filedata"]["type"] . "
";

echo "Size: " . ($_FILES["Filedata"]["size"] / 1024) . " kB
";

echo "Temp file: " . $_FILES["Filedata"]["tmp_name"] . "
";

if (file_exists("../file_upload_img/" . $_FILES["Filedata"]["name"])) {

echo $_FILES["Filedata"]["name"] . " already exists. ";

}

else {

$random_file_name = sha1(uniqid($_FILES["Filedata"]["name"]));

/*

* ROTATE, CROP AND RESIZE

*/

// 4:3 Ratio version

$manipulator = new ImageManipulator($_FILES['Filedata']['tmp_name']);

// Resize image to 600px wide and 450px high

$manipulator = $manipulator->resample(600, 450);

// saving file to uploads folder

$manipulator->save("../file_upload_img/43/" . $random_file_name . $_FILES["Filedata"]["name"]);

$width = $manipulator->getWidth();

$height = $manipulator->getHeight();

$centreX = round($width / 2);

$centreY = round($height / 2);

// our dimensions will be 600x450

$x1 = $centreX - 300; // 600 / 2

$y1 = $centreY - 225; // 450 / 2

$x2 = $centreX + 300; // 600 / 2

$y2 = $centreY + 225; // 450 / 2

// center cropping to 200x130

$newImage = $manipulator->crop($x1, $y1, $x2, $y2);

// rotate 90 degrees to the right

$imageResource = $newImage->getResource();

$angle = '90'; // in degrees

$fileName = "../file_upload_img/43/" . $random_file_name . $_FILES["Filedata"]["name"];

$rotatedImage = imagerotate($imageResource, $angle);

imagejpeg($rotatedImage, $fileName, 95);

// saving file to uploads folder

$manipulator->save("../file_upload_img/43/" . $random_file_name . $_FILES["Filedata"]["name"]);

// 640:120 Ratio version

$manipulator_640 = new ImageManipulator($_FILES['Filedata']['tmp_name']);

// Resize image to 640px wide and 120px high

$manipulator_640 = $manipulator_640->resample(640, 120);

// saving file to uploads folder

$manipulator_640->save("../file_upload_img/header/" . $random_file_name . $_FILES["Filedata"]["name"]);

$width_640 = $manipulator_640->getWidth();

$height_640 = $manipulator_640->getHeight();

$centreX_640 = round($width_640 / 2);

$centreY_640 = round($height_640 / 2);

// our dimensions will be 640x120

$x1_640 = $centreX_640 - 320; // 640 / 2

$y1_640 = $centreY_640 - 60; // 120 / 2

$x2_640 = $centreX_640 + 320; // 640 / 2

$y2_640 = $centreY_640 + 60; // 120 / 2

// center cropping to 640x120

$newImage_640 = $manipulator_640->crop($x1_640, $y1_640, $x2_640, $y2_640);

// saving file to uploads folder

$manipulator_640->save("../file_upload_img/header/" . $random_file_name . $_FILES["Filedata"]["name"]);

/*

*****************

*/

}

}

}

else {

echo "Invalid file";

}

$data=ob_get_clean();

编辑2

我已将用户@matewka的代码添加到我的PHP中.我用包含的旋转代码编辑了我的PHP.代码根本不会旋转图像.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值