1

当我试图从我的开发环境中的数据库加载图像时,无法加载图像,而是返回错误消息“图像无法显示,因为它包含错误。”

<?php

require_once 'app_config.php';                 //app config file
require_once 'database_connection.php';        //database connection

try{
//Get the image id.
if(!isset($_REQUEST['image_id'])){
handle_error("No image to load was specified.");
}
$image_id = $_REQUEST['image_id'];

//Build the SELECT statement
$select_query = sprintf("SELECT * FROM images WHERE image_id = %d", $image_id);

//Run the query
$result = mysql_query($select_query);

//Get the result and handle errors from getting no result
if(mysql_num_rows($result) == 0){
  handle_error("We couldn't find the requested image.", "No image found with and    ID of " . $image_id . ".");
 }
 $image = mysql_fetch_array($result);

//Tell the browser what's coming with headers
header('Content-type: ' . $image['mime_type']);
header('Content-length: ' . $image['file_size']);

echo $image['image_data']; 
}catch(Exception $exc){
  handle_error("Something went wrong loading your image.",
             "Error loading image: " . $exc->getMessage());
}

?>
4

3 回答 3

0

存储图像数据时如何对其进行编码?我建议您尝试base64_decode()一下,因为这是传输/存储图像数据的常见方式。

echo base64_decode($image['image_data']);
exit; 
于 2013-09-17T02:29:13.460 回答
0

当图像使用 CMYK 颜色空间时,我在完全合法的图像上看到了这个错误——许多/大多数浏览器不支持。尝试直接在浏览器中加载原始图像(没有 PHP/DB 进程),看看它是否会引发相同的错误。如果是这样,您应该使用图像编辑器将图像转换为 RGB(如果您想在服务器端进行,则使用 imagemagick)。

这也是某些 FF 扩展(即 Skype)的已知问题。尝试禁用扩展程序或其他浏览器以查看此问题是否会影响您。

于 2013-09-17T02:49:51.153 回答
0
$sql = mysql_query("SELECT * FROM images WHERE image_id = %d", $image_id");


header("Content-Type: image/jpeg");
$row = mysql_fetch_row($sql);

$im=imagecreatefromstring($row[$i]);
imagejpeg($im).'<br>';


echo("<img src=\"$im.$name\" width=\"200\" height=\"150\" />");

这可能有效..

于 2013-09-17T02:44:28.407 回答