HTML <img/>(或JS图像)与通过PHP的内联图像(base64_encoded image)

时间:2011-11-17 12:40:10

标签: php javascript html image

我的网页最初通过在javascript中动态创建图片来填充大约1000个缩略图。由于权限问题,我迁移到suPHP。现在,而不是使用标准的<img>标签

<img src="/foo/bar.jpg" alt="Foo Bar"/>

我正在通过这个PHP脚本检索

$file = fread($handle, filesize($filename));

$a = array(
    'type' => 'image/jpeg;base64',
    'image' => base64_encode($file)
);

echo json_encode($a);

然后像这样创建图像(在xmlhttprequest回调中,已经创建了图像)

image.src = 'data:' + data['type'] + ',' + data['image'];

它工作,但我只能可靠地加载一半的图片。如果我尝试加载所有这些,铬崩溃。我不认为这是性能相关的,因为图片加载速度非常快。任何想法为什么会发生这种情况?

1 个答案:

答案 0 :(得分:3)

如果您可以调用PHP脚本来生成base64_encoded图像,那么您应该(?)能够让浏览器从PHP脚本加载图像并完全跳过JSON / AJAX。

<?php
header('Content-Type: image/png'); // Change MIME type for different images (JPEG / GIF)
// Probably need Content-Length header in here too
header('Content-Length: ' . filesize( $filename));

echo file_get_contents( $filename);
exit;
?>

然后使用这样的东西(我使用image_id来确定要加载的图像,你必须有类似的东西):

<img src="/load_image.php?image_id=1234" alt="" />