首页 > 解决方案 > php getimagesize 混合了 IOS GIF(实时照片)的宽度和高度

问题描述

我正在使用 phpgetimagesize在数据库中设置宽度和高度列。除了一些由 Iphone 相机(实时照片)拍摄的 GIF 之外,所有图像都可以正常工作。在这种情况下,宽度和高度会被切换。我的第一个想法是用来exif_read_data检查方向和旋转。但我不相信它支持 GIF。识别迷失方向图像的最佳方法是什么?如果这确实是问题?

            $img = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $media));
            if (!$img) {
                    echo "!img media: $media";
                return false;
            }
            $tfn = $user_id.''.time().'tmp';
            file_put_contents($tfn, $img);
            $info = getimagesize($tfn);
            unlink($tfn);

            if (($info[0] > 0 && $info[1] > 0 && $info['mime'])) {
                    $mfa = explode('/', $info['mime']);
                    if($mfa[0] != 'image'){
                            echo "not an image";
                            return 0;
                    }
                    $media_format = $mfa[1];
                    if($media_type = "gif") {$media_format = "gif";$media_type = "image";}
                    $media_name = md5("kaa".$page_id."".time()."".$user_id).".".$media_format;
                    $file = rand(0,1000000);
                    $path = "/var/www/html/api/media/posts/".$file;
                    $data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $media));

                    if(!file_exists($path))
                            mkdir($path, 0777, true);
                    if(!file_put_contents($path.'/'.$media_name, $data)){
                            return 0;
                    }
                    $media_p = $file.'/'.$media_name;
                    $dimens = $info[0].'x'.$info[1];
                    //echo "info[3] = ";echo $info[3];
            }

`

标签: phpiosimage-processinggetimagesizeapple-live-photos

解决方案


推荐阅读