getimagesize
データベースに幅と高さの列を設定するためにphpを使用しています。Iphone カメラ (Live Photos) で撮影された一部の 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];
}
`