在.NET中成功运行时,imagecreatefromstring失败

时间:2012-11-13 21:01:57

标签: php gd2

我有一个base64编码的图像。通过C#解码此图像就像一个带有以下代码的魅力:

byte[] imageBytes = Convert.FromBase64String(decodeImageForm.Data);
var ms = new System.IO.MemoryStream(imageBytes, 0, imageBytes.Length);

// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
pbImage.Image = Image.FromStream(ms, true);

但是,尝试使用以下代码在PHP中解码相同的文本时

$payload = "..."; // same text as used above
$data = base64_decode($payload);    
$im = imagecreatefromstring($data);
if ($im !== false)
{
   header('Content-Type: image/png');
   imagepng($im);
   imagedestroy($im);       
}
else 
{        
    die("Failed to create image from string. ".strlen($payload));
}

它失败并出现以下警告:

  

警告:imagecreatefromstring():数据不是可识别的格式

这是phpinfo()的GD部分

  • 已启用GD支持
  • 捆绑的GD版本(2.0.34兼容)
  • 启用了FreeType支持
  • FreeType链接与freetype
  • FreeType版本2.4.6
  • 启用了T1Lib支持
  • 启用GIF阅读支持
  • 启用GIF创建支持
  • 启用JPEG支持
  • libJPEG Version 6b
  • 启用了PNG支持 libPNG版本1.2.46 已启用WBMP支持 启用XBM支持

指令本地价值主值 gd.jpeg_ignore_warning 0 0

我在这里缺少什么?有些图像有时会起作用

1 个答案:

答案 0 :(得分:-1)

所以事实证明图像的mime类型是x-bmp,而PHP中的GD不支持... 我能够通过following link将字符串解码为图像资源,只需稍加修改即可接受字符串流而不是文件名。