php写文件旋转90度,使用PHP中EXIF扩展解决iphone拍照上传会旋转90度的问题

0x01 开启EXIF扩展支持检查是否有PHP中的EXIF扩展库,有的话就修改php.ini中:

1.在php.ini文件中找到;extension=php_exif.dll,去掉前面的分号

2.在php.ini文件中找到;extension=php_mbstring.dll,去掉前面的分号,并将此行移动到extension=php_exif.dll之前,使之首先加载*。

3.找到[exif]段,把下面语句的分号去掉。

;exif.encode_unicode = ISO-8859-15

;exif.decode_unicode_motorola = UCS-2BE

;exif.decode_unicode_intel = UCS-2LE

;exif.encode_jis =

;exif.decode_jis_motorola = JIS

;exif.decode_jis_intel = JIS

0x02 使用exif判断图片是否需要进行旋转//需要判断的文件路径

$imgfile = $__root__.'/'.$returnDir;

if (!function_exists('exif_read_data')) {

return;

}

//好像iphone拍照的都是jpg格式,所以这里直接处理jpg图像

$img = @imagecreatefromjpeg($imgfile);

if($img === false){

return;

}

//用exif获取图像信息,并判断是否需要旋转

$exif = exif_read_data($imgfile);

if (!empty($exif['Orientation'])) {

switch ($exif['Orientation']) {

case 8:

$image = imagerotate($img, 90, 0);

break;

case 3:

$image = imagerotate($img, 180, 0);

break;

case 6:

$image = imagerotate($img, -90, 0);

break;

}

}

imagedestroy($img);

if (isset($image)) {

imagejpeg($image, $imgfile);

imagedestroy($image);

}

//旋转完毕后,进行图片缩放,一定要先判断旋转原图,然后在进行其他图片处理,

//缩放图片(采用的CI框架的图片缩放类)

$config['image_library'] = 'gd2';

$config['source_image'] = $__root__.'/'.$returnDir;

$config['create_thumb'] = TRUE;

$config['maintain_ratio'] = TRUE;

$config['width'] = 250;

$this->load->library('image_lib', $config);

if ($this->image_lib->resize()){

unlink($__root__.'/'.$returnDir);//删除原图,只保留缩略图

return $__root__.'/'.$Dir.'/'.date('ymd').'/'.$fileName.'_thumb.'.$postfix;

}

0x03 其他问题我当时在测试的时候,遇到了报下面这个错。

Allowed memory size of 134217728 bytes exhausted (tried to allocate 12096 bytes)

这个需要将php.ini的memory_limit = 128M;改为一个更大的值。

一个php脚本一次请求的内存空间就要超过128M,那不管将memory_limit设置成多大,以后肯定有出问题的时候。

究其原因,是我在编码时,仅仅对变量赋值,却从来没有 unset ($var) 过。导致了内存占用越来越多,所以以后一个变量不再使用之后,一定要记得unset掉它。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值