dsentker / imageorientationfixer
该包的最新版本(dev-master)没有提供许可证信息。
修复上传图片的方向
dev-master
2022-05-19 10:18 UTC
Requires
- php: >=5.4
This package is auto-updated.
Last update: 2024-09-19 15:37:44 UTC
README
修复上传图片的方向问题。
问题
一个原生分辨率为600x1500像素的图片,如果元数据中存储了相应的值,仍然可以以横幅格式(1500x600)显示。例如,当图片是用智能手机拍摄的,并且设备被旋转90度以适应横向格式时,就会出现这种情况。
这张图片可能导致在浏览器中出现意外的结果(使用众所周知的-元素显示)。浏览器不考虑EXIF信息,并错误地显示图片。
解决方案
幸运的是,智能手机和其他现代设备在图片中存储了合适的EXIF元信息。这个PHP库读取这些信息,并根据需要自动旋转图片。
优点
ImageOrientationFixer 从图片中读取EXIF数据以评估图片的原始方向。如果服务器上未安装EXIF扩展,可以使用正则表达式辅助的替代读取器(RegexReader)访问这些信息。
您可以选择替换原始图片或以新名称保存(我真的不明白为什么要这样做)。
缺点
此库使用GD图像扩展来访问文件类型并进行旋转。众所周知,此扩展占用内存较多。因此,此库不适合批量处理多个大图片。
我欢迎任何对该开源项目的帮助,例如使用具有DI的更灵活的图像处理库。
安装
从GitHub下载文件,并使用位于/src/ImageOrientationFixer的autoloader.php文件。
我建议使用composer: composer require "dsentker/imageorientationfixer:*@dev"
使用方法
快速使用
use DSentker\ImageOrientationFixer\ImageOrientationFixer; require_once 'vendor/autoload.php'; // image.jpg will be replaced with the fixed version of this image ImageOrientationFixer::fixImage('path/to/image.jpg');
优势使用
require_once 'vendor/autoload.php'; $imageFile = 'image.jpeg'; require '../src/ImageOrientationFixer/autoload.php'; $fixer = new \DSentker\ImageOrientationFixer\ImageOrientationFixer($imageFile); /** @var \DSentker\ImageOrientationFixer\Image $fixedImage */ $fixedImage = $fixer->getFixedImage(); $fixedImage->save(); // Replace old image // Alternate approach with the regex reader, if EXIF extension is not installed $overwriteImage = true; $regexFixer = new \DSentker\ImageOrientationFixer\ImageOrientationFixer($imageFile); $regexFixer->setReader(new \DSentker\ImageOrientationFixer\OrientationReader\RegexReader()); $result = $regexFixer->getFixedImage()->saveAs('fixed.jpg', $overwriteImage); if($result) { echo 'Are U A Wizard?'; }
致谢
提交错误和功能请求
错误和功能请求在GitHub上跟踪。
待办事项(欢迎帮助!)
- 编写测试
- 创建方向读取器工厂
- 创建Symfony3包
- 让开发者选择GD/GD2、Imagick和其他酷炫的图像库。
版权和许可证
ImageOrientationFixer许可使用MIT许可证(MIT)。请参阅LICENSE获取更多信息。