1

データベーステーブルフィールドから画像を取得するための次のコードがあります。

public function getStudentses() {
    $students_data = array();       

    $query = $this->db->query(
        "SELECT * FROM " . DB_PREFIX . "students 
        WHERE customer_id = '" . (int)$this->customer->getId() . "'");   

    foreach ($query->rows as $result) {             
        $students_data[$result['students_id']] = array(
            'students_id'        => $result['students_id'],
            'firstname'          => $result['firstname'],
            'filename'           => $result['filename'],
            'image'              => $result['image'],
        );
    }       
    return $students_data;
}

これは、表示画像のHTMLコードです。

<img src="<?php echo $result['image']; ?>" />

しかし、ページをレンダリングすると、画像が正しく表示されません。

s4�.���N����萗�p�A@4pbr��]�����F�G�&gt;�v��W

なんでこんな感じ?エラーを修正するにはどうすればよいですか?

4

5 に答える 5

4

最近のブラウザは、生の画像データをソースとして使用するためのこのサポートを備えています。

次のようなものを使用してみてください。

<img src="data:image/png;<?php echo $result['image']; ?>" />

base64を使用して画像をエンコードしてから、次のように出力する必要があります。

<img src="data:image/png;base64,<?php echo base64_encode($result['image']); ?>" />

image/pngたとえば、私は使用しています。画像が別のものである場合は、対応するencTypeを使用する必要があります。

これこれを必ず読んでください。

于 2012-11-20T09:09:36.590 に答える
2

ほとんどの場合、ヘッダーを画像に変更する必要があります

http://php.net/manual/en/function.header.php

header('Content-Type: image/jpeg');
于 2012-11-20T09:09:07.513 に答える
2

これ(私が見たもの)の最も一般的な方法は、htmlをビルドすることです:

<img src="image.png.php?student_id=<?php echo $result['students_id']; ?>" />

そしてimage.png.php

$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "students "
            "WHERE students_id = '" .(int)$request->getRequestParam('sudent_id') . "'"); 

// And now display raw content as image
$student = reset( $query->rows);
if( !$student){
   header('HTTP/1.0 404 Not Found');
   die( 'Blah blah... Blah blah blah');
}

header( 'Content-Type: image/jpeg');
echo $student['image'];

このようにして、必要な場所から使用できる画像へのリンクを作成できます(リモートサイトでデータベースにアクセスする必要はありません)。

于 2012-11-20T09:17:25.967 に答える
1

画像の生のバイナリを保存していると仮定すると、次のことができます。

'image'              => base64_encode($result['image']),

次に、htmlで:

<img src="data:image/png;base64,<?php echo $result['image']; ?>" />

これは、画像がpngであることを前提としています。そうでない場合は、それに応じてmimeタイプを変更します。

于 2012-11-20T09:10:58.027 に答える
0

画像がこのコードで保存されている場合

  s4�.���N����萗�p�A@4pbr��]�����F�G�&gt;�v��W

これは、データベースからこのコードをコピーして貼り付けるだけだからです。画像の名前/IDと画像のパスが保存されている場所を確認し、パスとID /名前で画像を取得するか、Prasanthが言ったことに従ってください。これは私の助けになります MySQLデータベースから画像を取得してhtmlタグで表示する方法

于 2012-11-20T09:18:49.370 に答える