PHP imagecreatefromjpeg 同时保持方向
PHP imagecreatefromjpeg while keeping orientation
我一直在处理我的图片上传网站。我正在尝试从我的 IPhone 中拍摄照片并将它们上传到我的网络服务器。
我的文件上传正常,但是我 运行 遇到的问题是我所有的图像都向左旋转了 90 度。
我的图片上传过程
$imageObject = imagecreatefromjpeg($_FILES["fileToUpload"]["tmp_name"]);
imagejpeg($imageObject, $target_file, 75);
正在创建新图像并将其上传到我的网站目录。我创建了一个新图像以删除所有 EXIF 数据(GPS 位置,我的所有个人信息)
问题是当我上传图片时,它没有以纵向保存文件 (6)。它实际上并不保存任何方向信息。这是 imagecreatefromjpeg 的明显副作用。但是我所有的肖像风格图片都保存为横向格式。
我的问题是,在保存到我的服务器后,有没有什么方法可以让我简单地将方向数据重写到新图像中?
谢谢大家的宝贵时间!
您可以读取 exif 信息并使用它来旋转或翻转图像。那么你就不需要方向数据了。
类似于:
$imageObject = imagecreatefromjpeg($_FILES["fileToUpload"]["tmp_name"]);
# Get exif information
$exif = exif_read_data($_FILES["fileToUpload"]["tmp_name"]);
# Add some error handling
# Get orientation
$orientation = $exif['Orientation'];
# Manipulate image
switch ($orientation) {
case 2:
imageflip($imageObject, IMG_FLIP_HORIZONTAL);
break;
case 3:
$imageObject = imagerotate($imageObject, 180, 0);
break;
case 4:
imageflip($imageObject, IMG_FLIP_VERTICAL);
break;
case 5:
$imageObject = imagerotate($imageObject, -90, 0);
imageflip($imageObject, IMG_FLIP_HORIZONTAL);
break;
case 6:
$imageObject = imagerotate($imageObject, -90, 0);
break;
case 7:
$imageObject = imagerotate($imageObject, 90, 0);
imageflip($imageObject, IMG_FLIP_HORIZONTAL);
break;
case 8:
$imageObject = imagerotate($imageObject, 90, 0);
break;
}
# Write image
imagejpeg($imageObject, $target_file, 75);
创建图像保持纵横比:
答案是Here
我一直在处理我的图片上传网站。我正在尝试从我的 IPhone 中拍摄照片并将它们上传到我的网络服务器。
我的文件上传正常,但是我 运行 遇到的问题是我所有的图像都向左旋转了 90 度。
我的图片上传过程
$imageObject = imagecreatefromjpeg($_FILES["fileToUpload"]["tmp_name"]);
imagejpeg($imageObject, $target_file, 75);
正在创建新图像并将其上传到我的网站目录。我创建了一个新图像以删除所有 EXIF 数据(GPS 位置,我的所有个人信息)
问题是当我上传图片时,它没有以纵向保存文件 (6)。它实际上并不保存任何方向信息。这是 imagecreatefromjpeg 的明显副作用。但是我所有的肖像风格图片都保存为横向格式。
我的问题是,在保存到我的服务器后,有没有什么方法可以让我简单地将方向数据重写到新图像中?
谢谢大家的宝贵时间!
您可以读取 exif 信息并使用它来旋转或翻转图像。那么你就不需要方向数据了。
类似于:
$imageObject = imagecreatefromjpeg($_FILES["fileToUpload"]["tmp_name"]);
# Get exif information
$exif = exif_read_data($_FILES["fileToUpload"]["tmp_name"]);
# Add some error handling
# Get orientation
$orientation = $exif['Orientation'];
# Manipulate image
switch ($orientation) {
case 2:
imageflip($imageObject, IMG_FLIP_HORIZONTAL);
break;
case 3:
$imageObject = imagerotate($imageObject, 180, 0);
break;
case 4:
imageflip($imageObject, IMG_FLIP_VERTICAL);
break;
case 5:
$imageObject = imagerotate($imageObject, -90, 0);
imageflip($imageObject, IMG_FLIP_HORIZONTAL);
break;
case 6:
$imageObject = imagerotate($imageObject, -90, 0);
break;
case 7:
$imageObject = imagerotate($imageObject, 90, 0);
imageflip($imageObject, IMG_FLIP_HORIZONTAL);
break;
case 8:
$imageObject = imagerotate($imageObject, 90, 0);
break;
}
# Write image
imagejpeg($imageObject, $target_file, 75);
创建图像保持纵横比:
答案是Here