作者shadowjohn (這事要用身體解釋)
看板PHP
標題Re: [請益] 文字與圖片顯示
時間Wed Jun 3 19:48:53 2015
※ 引述《shadowjohn (這事要用身體解釋)》之銘言:
: ※ 引述《dodo12500 (小莫)》之銘言:
: : 大家好,小弟剛學php,在圖片顯示上遇到一些問題
: : 我在members資料表中存NUM(int)和img(blob)這兩項資訊
: : 然後在showMembers.php上顯示編號和圖片
: : 我的問題是不曉該怎麼樣同時顯示文字訊息和圖片
: : 若在showMembers.php增加header("Content-type: image/jpeg"); 則會沒辦法顯示編號
: : 於是我想說將顯示圖片用showPic.php來顯示,但不太曉得該怎麼將img的資料傳過去
: : 或者有甚麼樣的作法比較恰當呢?
: : 麻煩板上大大們幫助了 謝謝!
: : showMembers.php
: : ----------------------------------------------
: : <?php
: : include("DB_connect.php");
: : $sql = "SELECT * FROM members";
: : $result = $conn->query($sql);
: : if ($result->num_rows > 0) {
: : // output data of each row
: : while($row = $result->fetch_assoc()) {
: : echo "NUM:".$row["NUM"]."<br>";
: : echo "<IMG height='100' SRC=\"showPic.php?img=".$row[img]."\">";
: : }
: : } else {
: : echo "0 results";
: : }
: : $conn->close();
: : ?>
: : ----------------------------------------------
: : showPic.php
: : ----------------------------------------------
: : <?php
: : header("Content-type: image/jpeg");
: : echo $_GET[img];
: : ?>
: : ----------------------------------------------
: 方法有二種:
: 第一種:
: 在列表時,請不要直接把 blob 那個欄位也查出來,
: 把圖片的流水號帶給 showPic.php 就好。
: 如:showPic.php?id=3
: 在你的 showPic.php 裡
: <?php
: //建立連線
: ...
: 查找 SQL where ID = $_GET['id']
: // header
: ...
: // 輸出圖內容
: echo blob 內容
: 第二種:
: 要記得 session_start() 呦
: 既然你已經把 blob 在列表中查出來了,把他寫入 session 吧 XD
: $_SESSION['img'] = blob..
: 在 showPic.php 裡,直接
: <?php
: //header
: ...
: // 輸出圖內容
: echo $_SESSION['img'];
: 建議不要在資料庫直接存 blob 內容,到最後會很慢~
: 也不好備份或分散
: 以上二個方法,第一種較好
對了~想到還有一招可以用~
$data = base64_encode($row['img']);
然後 <img src="data:image/png;base64,<?=$data;?>">
這樣也是可以,只是 cpu 會吃較多,然後資料變大 :D
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.110.45.216
※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1433332135.A.719.html
→ MOONRAKER: 每個圖片至少膨脹25% 06/03 20:13
→ MOONRAKER: (當初那個專案應該用這招整死他們的) 06/03 20:14
→ shadowjohn: 這是祕密呦(啾咪)~ 06/03 20:36
→ shadowjohn: b64 會增加 1/3 的大小,約 33.3% 才對 :D 06/03 20:42
→ MOONRAKER: OHNO沒錯是1/3 06/03 21:51
推 kensou0012: 關鍵字一下 Src="data:image/jpeg;base64,.... 06/04 01:06
→ kensou0012: 這樣就一次查詢一次 request 06/04 01:07
推 kensou0012: 唉唷!我重複了哈哈抱歉 06/04 01:09
→ fishtw: ie8有32k的資料長度限制 06/04 08:16
→ gname: Base64 Image 會膨脹文字資料,但可以減少 request 06/04 11:29