作者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://webptt.com/cn.aspx?n=bbs/PHP/M.1433332135.A.719.html
1F:→ MOONRAKER: 每个图片至少膨胀25% 06/03 20:13
2F:→ MOONRAKER: (当初那个专案应该用这招整死他们的) 06/03 20:14
3F:→ shadowjohn: 这是秘密呦(啾咪)~ 06/03 20:36
4F:→ shadowjohn: b64 会增加 1/3 的大小,约 33.3% 才对 :D 06/03 20:42
5F:→ MOONRAKER: OHNO没错是1/3 06/03 21:51
6F:推 kensou0012: 关键字一下 Src="data:image/jpeg;base64,.... 06/04 01:06
7F:→ kensou0012: 这样就一次查询一次 request 06/04 01:07
8F:推 kensou0012: 唉唷!我重复了哈哈抱歉 06/04 01:09
9F:→ fishtw: ie8有32k的资料长度限制 06/04 08:16
10F:→ gname: Base64 Image 会膨胀文字资料,但可以减少 request 06/04 11:29