PHP 使用 imagecreatefromstring() 时将图像导出为相同类型(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 资源进行一些操作(修改一些像素等)之后,我想 return 以相同的格式再次返回图像字符串。也就是说,如果数据字符串包含PNG图像,我想生成PNG图像的return字符串。如果它是 JPG 那么我想 return 它作为字符串中的 JPG。
PHP 支持 imagejpeg()
或 imagepng()
等功能,所以如果我知道如何检测 $im 资源的图像类型,那么我就万事俱备了。 imagesx()
和 imagesy()
等函数 $im
资源的 return 宽度和高度,但我找不到合适的函数 return IMAGE $im
资源的类型。
我想到的唯一方法是分析原始文件的第一个字节 $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);
我有一个 PHP 函数,它接受任意字符串并从中创建图像资源,自动检测图像格式,如下所示:
$im = imagecreatefromstring($image_data_string);
如您所知,当 $image_data_string
包含任何支持的图像类型(如 JPG、PNG 等)时,这会创建 $im 图像资源。
在对 $im 资源进行一些操作(修改一些像素等)之后,我想 return 以相同的格式再次返回图像字符串。也就是说,如果数据字符串包含PNG图像,我想生成PNG图像的return字符串。如果它是 JPG 那么我想 return 它作为字符串中的 JPG。
PHP 支持 imagejpeg()
或 imagepng()
等功能,所以如果我知道如何检测 $im 资源的图像类型,那么我就万事俱备了。 imagesx()
和 imagesy()
等函数 $im
资源的 return 宽度和高度,但我找不到合适的函数 return IMAGE $im
资源的类型。
我想到的唯一方法是分析原始文件的第一个字节 $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);