Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Firefox和Chrome赢得了';t解码base64图像或pdf文件_Html_Image_Firefox_Google Chrome_Base64 - Fatal编程技术网

Html Firefox和Chrome赢得了';t解码base64图像或pdf文件

Html Firefox和Chrome赢得了';t解码base64图像或pdf文件,html,image,firefox,google-chrome,base64,Html,Image,Firefox,Google Chrome,Base64,我正在尝试使用数据uri方案在浏览器上解码base64编码的图像 这就是我的html的外观: <img src="data:image/png;base64,base64_string_here" alt="base64 image name" width="600" height="400" border="1" /> Chrome和Firefox无法解码这些图像并显示默认的“图像无法加载”图像。我已验证传递到浏览器的base64图像是否正确。事实上,Safari在显示

我正在尝试使用数据uri方案在浏览器上解码base64编码的图像

这就是我的html的外观:

<img src="data:image/png;base64,base64_string_here" 
  alt="base64 image name" width="600" height="400" border="1" />

Chrome和Firefox无法解码这些图像并显示默认的“图像无法加载”图像。我已验证传递到浏览器的base64图像是否正确。事实上,Safari在显示相同的图像时没有问题

我尝试让浏览器解码类似的base64编码PDF,但这也不起作用。(同样,它在Chrome和Firefox上不起作用,但在Safari上起作用。)


Chrome版本:18.0,FF版本:11.0


有人知道这里可能出了什么问题吗?(如果有帮助的话——我试图显示的base64编码图像是USPS发货标签)

Chrome和Firefox很可能会打开TIF图像——如果你告诉他们,他们就是TIF图像。目前在您的示例中,您告诉他们,它们是PNG图像,这应该是问题所在。。。尝试:

<img src="data:image/tiff;base64,base64_string_here" 
  alt="base64 image name" width="600" height="400" border="1" />

事实上,即使您提供了正确的MIME类型,Chrome、Firefox和Opera本机也不支持.TIF文件:它们需要一个插件来处理它们


这里有一个关于浏览器对图像文件支持的有用总结:

这与最近Chrome团队决定阻止顶部框架导航到数据URL有关(在Google Chrome最新版本60更新中)


$3AStable%7Csort:relevance%7Cspell:false

我知道这是一个非常老的问题,但我最近遇到了同样的问题。(源自USPS标签返回)我通过将Base64字符串编码的TIFF转换为Base64字符串位图图像(尽管您可以使用任何您想要的图像类型)来修复它

我使用C#转换图像:

    Byte[] arrTiff = Convert.FromBase64String(FixBase64ForImage(oeVS.LabelImage));
    System.IO.MemoryStream msTiff = new System.IO.MemoryStream(arrTiff);
    Bitmap bmpTiff = new Bitmap((Bitmap)Image.FromStream(msTiff));
    System.IO.MemoryStream msBmp = new System.IO.MemoryStream();
    bmpTiff.Save(msBmp, System.Drawing.Imaging.ImageFormat.Bmp);
    Byte[] arrBmp = msBmp.ToArray();
    string sBMP64 = Convert.ToBase64String(arrBmp);
然后在html/javascript中,您可以使用它来显示标签,其中sBMP64是上面的结果


BMP是为我的目的工作的,但这里有一个浏览器支持的图像表:

你能发布一个完整的base64数据示例吗?你验证过Firefox可以打开原始图像吗?这里有一个指向base64数据的链接:@Anonymous没有“原始”图像-我得到的响应来自USPS的服务器。此响应是base64编码的字符串,需要在浏览器上显示为图像。我对base64没有深入的了解,但当我使用在线解码器(opinionatedgeek.com/dotnet/tools/Base64Decode/)时,我能够打开它只在Safari中返回的二进制文件(将扩展名更改为.jpg后)。Firefox和Chrome无法打开此文件。这些信息有用吗?找到了一些更有用的信息:我从USPS得到的图像是TIF。Google Chrome和Firefox都不打开TIF文件。这就解释了为什么他们无法解码base64图像文件。但我也可以从USPS而不是TIF获得pdf。Google Chrome应该能够打开pdf,但据我所见,当它们采用base64编码时,它无法解码。然而,Chrome能够在我首先解码后打开pdf。(来源:)这似乎表明谷歌Chrome在img标签中支持PDF。但如果我尝试,图像不会显示(尽管它在Safari中显示)。考虑到OP在2012年使用Chrome 18时遇到了这个问题,这似乎不太可能。
    Byte[] arrTiff = Convert.FromBase64String(FixBase64ForImage(oeVS.LabelImage));
    System.IO.MemoryStream msTiff = new System.IO.MemoryStream(arrTiff);
    Bitmap bmpTiff = new Bitmap((Bitmap)Image.FromStream(msTiff));
    System.IO.MemoryStream msBmp = new System.IO.MemoryStream();
    bmpTiff.Save(msBmp, System.Drawing.Imaging.ImageFormat.Bmp);
    Byte[] arrBmp = msBmp.ToArray();
    string sBMP64 = Convert.ToBase64String(arrBmp);