1

我使用 content-type:image/jpeg 创建了一个页面“student_picture.php”。当我想在同一页面中添加其他文本时遇到问题..

这是我的代码示例:

<?php
session_start();

if(!isset($_SESSION["StudentNo"])){
    header("location:login.php");
}

$StudentNo = $_SESSION['StudentNo'];

require("includes/connection.php");

$sql = "SELECT StudentPicture from dbo.Students where StudentNo = '$StudentNo'";
$stmt = sqlsrv_query( $conn, $sql );

if( $stmt === false) {
    die( print_r( sqlsrv_errors(), true) );
}

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
    $img = $row['StudentPicture'];

    if ($img == null ) {
        echo "<img src='img/default_pic.gif'>";
    } else {
        $img =  trim($img);
        header('Content-Type: image/jpeg');
        echo $img;
    }

    echo $StudentNo;
}
?>

图像已成功显示,但未显示 echo $StudentNo .. 谁能帮我解决我的问题?提前致谢。

4

4 回答 4

3

您可能需要使用以下代码:

<?php 

$image = 'http://www.example.com/image.jpg';

$info = getimagesize($image);

header('Content-Type: '.$info['mime']);

echo file_get_contents($image);

exit;

?>
于 2013-11-09T08:10:30.957 回答
1

我认为您在使用Content-Typeofimage/jpeg或我知道的任何其他类型的图像格式时无法显示文本。文本只能与text/?或其他例外一起显示,例如application/pdf

如果您在使用 php 文件时不知道如何在单独的页面上显示图像,请使用:

<img src="path/to/yourphpfile.php" />

就像任何其他图像一样。

希望有帮助。

于 2012-09-04T06:53:17.370 回答
0

你必须到exit你的脚本,因为它header被发送到客户端浏览器。如果$_SESSION["StudentNo"]不存在,脚本将处理并尝试输出您的图像。

<?php
    session_start();
    if(!isset($_SESSION["StudentNo"])){
        header("location:login.php");
        die();
    }

这不是输出图像的正确方法,而且不正确echo "<img src='img/default_pic.gif'>";header('Content-Type: image/jpeg');要么在没有该标题的情况下返回,要么读取图像:

if ($img == null){
    $img = 'img/default_pic.gif';
} else {
    $img =  trim($img);
}

header('Content-Type: image/jpeg');
readfile($img);

或者你丢失了标题标签

if ($img == null){
    $img = "<img src='img/default_pic.gif'>";
} else {
    $img = "<img src='".trim($img)."'>";
}
echo $img;

所以你的脚本可能是:

<?php
    session_start();
    if(!isset($_SESSION["StudentNo"])){
        header("location:login.php");
        die();
    }
    $StudentNo = $_SESSION['StudentNo'];

    require("includes/connection.php");

    $sql = "SELECT StudentPicture from dbo.Students where StudentNo = '$StudentNo'";
    $stmt = sqlsrv_query( $conn, $sql );
    if( $stmt === false) {
        die( print_r( sqlsrv_errors(), true) );
    }

    while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
        $img = $row['StudentPicture'];
        if ($img == null){
            $img = "<img src='img/default_pic.gif'>";
        } else {
            $img = "<img src='".trim($img)."'>";
        }
        echo $img;
        echo $StudentNo;
    }
?>

我不知道您的数据库连接中的功能,但我认为您应该使用类似的东西$row = sqlsrv_fetch_row( $stmt, SQLSRV_FETCH_ASSOC);并在没有它的情况下使用while

于 2012-09-04T06:43:39.293 回答
0

当在数据库中找到图像时,您正在输出图像,您需要通过包含动态 img

<img src="anotherscript.php">

或者使用内置图像库之一生成 jpg 文件并将其文件名存储在该数据库中,而不是存储原始数据

于 2012-09-04T06:49:33.723 回答