php - 警告 exif_read_data(php3KLADx):第 5 行的 /home/i/public_html/orientation.php 中不支持文件
问题描述
我让 exif 读取上传图像的方向。问题出在某些图像中,我收到此错误:
警告 exif_read_data(php3KLADx):第 5 行的 /home/i/public_html/orientation.php 中不支持文件
任何想法如何避免这种情况?
<?php
function exif_orientation($file_tmp) {
$image = imagecreatefromstring(file_get_contents($file_tmp));
$exif = exif_read_data($file_tmp);
if(!empty($exif['Orientation'])) {
switch($exif['Orientation']) {
case 8:
$image = imagerotate($image,90,0);
break;
case 3:
$image = imagerotate($image,180,0);
break;
case 6:
$image = imagerotate($image,-90,0);
break;
}
imagejpeg($image, $file_tmp, 90);
}
}
?>
解决方案
你应该这样做如下:
if (!function_exists('imageOrientation'))
{
function imageOrientation(string $directory)
{
if(file_exists($directory))
{
$destination_extension = strtolower(pathinfo($directory, PATHINFO_EXTENSION));
if(in_array($destination_extension, ["jpg","jpeg"]) && exif_imagetype($directory) === IMAGETYPE_JPEG)
{
if(function_exists('exif_read_data'))
{
$exif = exif_read_data($directory);
if(!empty($exif) && isset($exif['Orientation']))
{
$orientation = $exif['Orientation'];
switch ($orientation)
{
case 2:
$flip = 1;
$deg = 0;
break;
case 3:
$flip = 0;
$deg = 180;
break;
case 4:
$flip = 2;
$deg = 0;
break;
case 5:
$flip = 2;
$deg = -90;
break;
case 6:
$flip = 0;
$deg = -90;
break;
case 7:
$flip = 1;
$deg = -90;
break;
case 8:
$flip = 0;
$deg = 90;
break;
default:
$flip = 0;
$deg = 0;
}
$img = imagecreatefromjpeg($directory);
if($deg !== 1 && $img !== null)
{
if($flip !== 0)
{
imageflip($img,$flip);
}
$img = imagerotate($img, $deg, 0);
imagejpeg($img, $directory);
}
}
}
}
}
}
}
推荐阅读
- python - 如何随机化密码生成器的字符顺序
- python - 具有扩展属性的深色主题
- laravel - 为 Laravel 模型添加属性
- git - 如何在 Git Bash 中初始化 Composer 项目?
- ruby-on-rails - 如何让引导组件在使用rails的ajax之后打开?
- docker - docker工作目录和singularity的区别
- excel - 我想创建一个以管理员权限运行 .xlsm 文件的 .vbs 文件
- java - 在 deeplearning4j 中访问所有层的权重和原始激活
- android - 当 MaterialCardView 被子项覆盖时,其阴影不一致
- python - Python 列表理解:for 和 if 语句?