当使用imagecreatefromstring()时,PHP将图像导出为相同类型(PNG, JPG等)


PHP export image as the same type (PNG, JPG, etc) when using imagecreatefromstring()

我有一个PHP函数,它获取任意字符串并从中创建图像资源,自动检测图像格式,如下所示:

$im = imagecreatefromstring($image_data_string);

您肯定知道,当$image_data_string包含任何支持的图像类型(如JPG, PNG等)时,这会创建$im图像资源。

在对$im资源(修改一些像素等)进行一些操作后,我想以相同的格式再次返回图像字符串。也就是说,如果数据字符串包含PNG图像,我想返回生成的PNG图像字符串。如果它是JPG,那么我想返回字符串格式的JPG。

PHP支持imagejpeg()imagepng()等功能,所以如果我知道如何检测$im资源的图像类型,那么我将一切就绪。有像imagesx()imagesy()这样的函数返回$im资源的宽度和高度,但我无法找到适当的函数,它将返回$im资源的IMAGE TYPE。

我想到的唯一方法是分析原始$image_data_string的第一个字节,以找出图像类型。但是我更愿意使用本机PHP函数来实现这个目的,它可以处理$im资源参数。有这样的东西吗?

谢谢

用下面的代码代替

$imgdata = base64_decode($image_data_string);
$f = finfo_open();
$mime_type = finfo_buffer($f, $imgdata, FILEINFO_MIME_TYPE);
$im = imagecreatefromstring($image_data_string);
$filename = 'somerandomname';
switch($mime_type){
    case 'image/png':
        imagepng($image, $filename.'.png');
    break;
    default:
    break;
}
imagedestroy($im);