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

时间:2015-09-08 12:48:16

标签: php image gd

我有一个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_data_string的第一个字节,以便找出图像类型。但是我更喜欢用于此目的的本机PHP函数,它可以在$ im资源参数上工作。有什么类似的吗?

由于

1 个答案:

答案 0 :(得分:0)

请改用此代码

$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);