php - Exif 数据不旋转图像 php
问题描述
我已经尝试了很多我在互联网上找到的解决方案,但没有什么对我有用。我正在尝试调整图像大小和旋转图像取决于 exif 数据,但图像没有旋转。调整图像大小工作正常。但是旋转不起作用。以下是我用来执行此操作的功能。
function resize_imageb($newbfile,$max_resolution){
if(file_exists($newbfile)){
$original_image = imagecreatefromjpeg($newbfile);
$exif = exif_read_data($newbfile, 0, true);
if(!empty($exif['Orientation'])) {
switch($exif['Orientation']) {
case 8:
$original_image = imagerotate($original_image,90,0);
break;
case 3:
$original_image = imagerotate($original_image,180,0);
break;
case 6:
$original_image = imagerotate($original_image,-90,0);
break;
}
}
$original_width = imagesx($original_image);
$original_height = imagesy($original_image);
$ratio = $max_resolution/$original_width;
$new_width = $max_resolution;
$new_height = $original_height * $ratio;
if($new_height > $max_resolution){
$ratio = $max_resolution / $original_height;
$new_height = $max_resolution;
$new_width = $original_width * $ratio;
}
if($original_image){
$new_image = imagecreatetruecolor($new_width,$new_height);
imagecopyresampled($new_image, $original_image, 0, 0, 0, 0,$new_width, $new_height, $original_width, $original_height);
imagejpeg($new_image,$newbfile,100);
imagedestroy($original_image);
imagedestroy($new_image);
}
}
}
当我检查调整大小的图像时,方向信息从 exif 数据中消失了,但是我上传的原始图像确实有方向信息。我不确定我错过了什么或做错了什么。有人可以帮我弄这个吗?
解决方案
我没有在一个函数中执行 2 部分(调整大小和旋转),而是制作了两个函数,一个用于由 Wes 创建的旋转,然后用于调整大小。先调用旋转函数,再调用resize函数。
推荐阅读
- c++ - Ceres-Solver:有没有办法让 Jet 在成本函数中翻倍?
- asp.net-core - ASP.NET Core DDD Update domain model using the request ViewModel
- java - 将 SQL 查询结果中的普通列表转换为嵌套列表
- regex - 我在尸检中找不到正确的正则表达式
- visual-studio-2019 - 为什么当我调用函数时,作为 Eigen::Matrx 函数输入的地址会改变?
- python - 如何在python中生成所有具有固定长度的四位数字的序列号?
- azure-storage - 仅当 Blob 完全提交时才发生 BlobCreated 事件
- r - 基于多列重塑数据集
- rest - 无法使用标头感染 api
- three.js - Three.js 网格的天使调整