1

我有一个 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 版本 6b
  • 启用 PNG 支持 libPNG 版本 1.2.46 启用 WBMP 支持 启用 XBM 支持

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

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

4

1 回答 1

-1

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

于 2012-11-16T08:16:19.007 回答