作者 主題: 關於存取圖片(相片)問題  (閱讀 30203 次)

0 會員 與 1 訪客 正在閱讀本文。

edwardleung

  • 俺是博士!
  • *****
  • 文章數: 1135
    • 檢視個人資料
關於存取圖片(相片)問題
« 於: 2004-11-20 19:49 »
您們好,

小弟已成功利用 base64 功能把圖片(相片)儲存於資料庫中, 但無法直接利用php 把已讀取的資料(已由base64還原)通過IE顯示出來呢 ? 請問有否範例可供參考呢 ?

謝謝協助!

edwardleung

  • 俺是博士!
  • *****
  • 文章數: 1135
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #1 於: 2004-11-23 23:15 »
對不起,

請問有否關於 php 電子相冊如何製作 範例可供參考呢 ?

謝謝協助!

powerouch

  • 活潑的大學生
  • ***
  • 文章數: 234
    • 檢視個人資料
    • http://itmania.javamoh.net/s9y/
關於存取圖片(相片)問題
« 回覆 #2 於: 2004-11-24 09:47 »
what about 4images or gallery?
'm no more than a fxxking coding monkey....

edwardleung

  • 俺是博士!
  • *****
  • 文章數: 1135
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #3 於: 2004-11-24 20:33 »
Ok !

I want to try...

Thank for your help !

Ed.

roderja

  • 懷疑的國中生
  • **
  • 文章數: 55
    • 檢視個人資料
Re: 關於存取圖片(相片)問題
« 回覆 #4 於: 2006-03-14 01:05 »
我也遇到同樣的問題
請問大大現在有解決的方法嗎
謝謝


roderja

  • 懷疑的國中生
  • **
  • 文章數: 55
    • 檢視個人資料
IE無法顯示 但是NETSCAPE可以
« 回覆 #6 於: 2006-03-14 20:00 »
感謝大大

我遇到的問題是
當我利用微軟的IE打開時 無法顯示圖片
利用NETSCAPE可以

下面是我摘取出來的程式碼

//server.php //$GetPicResult 是利用base64_encode
$row = $QueryResult->fetch_row();
$GetPicResult = base64_encode($row[0]);

//client.php
echo '<img src="data:image/jpg;base64,'.$GetPicResult.' " alt="Base64 encoded image" />';

請問各位大大有沒有什麼辦法讓IE可以解讀base64_encode的圖片呢?
謝謝!

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
關於存取圖片(相片)問題
« 回覆 #7 於: 2006-03-15 00:38 »
為何不將圖片讀取輸出的部分獨立出來,
然後 <img src="showimg.php">

roderja

  • 懷疑的國中生
  • **
  • 文章數: 55
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #8 於: 2006-03-15 01:34 »
引述: yamaka
為何不將圖片讀取輸出的部分獨立出來,
然後 <img src="showimg.php">


大大您好
我將已經下列程式碼置放在pic.php
<?
Header( "Content-type: image/gif");
echo $getresult->result->PicInfo;
?>

當我在client.php執行下列程式碼時,IE瀏覽器仍然無法正常顯示圖片
echo '<IMG SRC="pic.php">';

謝謝

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
關於存取圖片(相片)問題
« 回覆 #9 於: 2006-03-15 01:57 »
直接在 IE 瀏覽 pic.php, 看看有無錯誤訊息..

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料
Re: IE無法顯示 但是NETSCAPE可以
« 回覆 #10 於: 2006-03-15 10:19 »
引述: "roderja"
感謝大大

我遇到的問題是
當我利用微軟的IE打開時 無法顯示圖片
利用NETSCAPE可以

下面是我摘取出來的程式碼

//server.php //$GetPicResult 是利用base64_encode
$row = $QueryResult->fetch_row();
$GetPicResult = base64_encode($row[0]);

//client.php
echo '<img src="data:image/jpg;base64,'.$GetPicResult.' " alt="Base64 encoded image" />';

請問各位大大有沒有什麼辦法讓IE可以解讀base64_encode的圖片呢?
謝謝!


若果 database 內的是 encode 了, 是否應該把它 decode 才顯示?
若果再 encode, …
我沒用過, 也不知道是怎樣的, 但是從正常的角度去想像, encode 了的東西看不到, 把它 decode 回來才顯示吧

wwwing

  • 懷疑的國中生
  • **
  • 文章數: 47
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #11 於: 2006-03-15 13:45 »
加上 ob_start() 跟 ob_flush() 試試看。

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
關於存取圖片(相片)問題
« 回覆 #12 於: 2006-03-15 14:17 »
引述: "roderja"

大大您好
我將已經下列程式碼置放在pic.php
<?
Header( "Content-type: image/gif");
echo $getresult->result->PicInfo;
?>

當我在client.php執行下列程式碼時,IE瀏覽器仍然無法正常顯示圖片
echo '<IMG SRC="pic.php">';

謝謝


你的資料讀取出來後...
$getresult->result->PicInfo;
並沒有解碼呀~~

roderja

  • 懷疑的國中生
  • **
  • 文章數: 55
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #13 於: 2006-03-17 00:07 »
大大您好

不管有沒有DECODE
都一樣
無法在IE裡頭顯示
永遠都顯示一個X

另外
之前在下列這個地方看到一份資料
按照那裡所述的方式
IE仍舊無法顯示
並建議IE使用MIME multipart
請問MIME multipart如何使用呢?

感謝

===========================
http://us2.php.net/manual/en/function.base64-encode.php

using base64_encode() to encode image data and finally output to browser using "data" scheme of IMG src:

<?
// ...
echo '<img src="data:image/png;base64,'.$encoded.' ">';
?>

Netscape browser supports this... However, Windows' Internet Explorer does not.

To embed binary contents in ascii text based html file for IE, you need use MIME multipart.

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #14 於: 2006-03-17 10:49 »
若果是叉燒包, 查清楚會否圖檔路徑不對

roderja

  • 懷疑的國中生
  • **
  • 文章數: 55
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #15 於: 2006-03-17 11:27 »
大大您好

如果沒有利用IMG SRC=XXXX的話
單純利用ECHO看內容的話
有資料
檔案應該是有讀取到啦

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #16 於: 2006-03-17 11:44 »
若果把 getPicResult 寫去一個檔案, 例如 temp.jpg
再以 <IMG SRC=/path/to/temp.jpg> 又可以嗎

roderja

  • 懷疑的國中生
  • **
  • 文章數: 55
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #17 於: 2006-03-17 22:14 »
寫入檔案
在以檔名的方式讀取
就沒有問題

所以很苦惱

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
關於存取圖片(相片)問題
« 回覆 #18 於: 2006-03-17 22:51 »
不是寫的很清楚嗎? Netscape 可以. IE 不行. 這與你測試的不也一樣?
要 IE 可以用... 就不要直接用 data: 的方式. 改用另一個 php script, 傳參數進去, 然後產生正確的 header 資料來用.

上頭的 php manual 不是有個 example:
代碼: [選擇]
image.php:

<?

header(" Content-Type: image/jpeg");
header(" Content-Disposition: inline");
$sql = "SELECT data FROM image where name='".$img."'";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$image = $row[0];
echo base64_decode($image);

?>

And in the html file you put:

<img src="image.php?img=test3"  border="0" alt="">

roderja

  • 懷疑的國中生
  • **
  • 文章數: 55
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #19 於: 2006-03-19 01:48 »
大大您好
照著指示
還是打個大叉叉耶(有DECODE 或者 沒有 DECODE 都有試過)
煩請指點 感謝

我的程式碼如下 (image試過了確實有讀取到 )
//readpic.php
<HTML>
<head>
</head>
<body>
<img src="getimage.php"  border="0" alt="">  
</body>
</html>

//getimage.php
<?php
header(" Content-Type: image/jpg");
header(" Content-Disposition: inline");
$TableNameOfPeople = 'people2';
$link = mysql_connect('localhost', 'abc', '123');
mysql_select_db('datasource');
$query = "select `pic` from " . $TableNameOfPeople;
$result = mysql_query($query);
$row = mysql_fetch_row($result);
$image = $row[0];
echo base64_decode($image);
//echo ($image);
?>

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
關於存取圖片(相片)問題
« 回覆 #20 於: 2006-03-19 09:56 »
你的圖到底是 png, gif, jpg 那一種? 那個 content-type 應該要與你的圖檔格式是相同的.

roderja

  • 懷疑的國中生
  • **
  • 文章數: 55
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #21 於: 2006-03-19 19:45 »
大大您好

圖檔是 JPG 匯入到 mysql 的

試過將$image存成檔案,tmp.jpg可以正常顯示
$ifp = fopen( "tmp.jpg", "wb" );
fwrite( $ifp, $image);
fclose( $ifp );

如果我單純的瀏覽 getimage.php
echo $image; 可以讀取到如下面的資料
煩請指點 感謝

?JFIF``?    $.' ",#(7),01444'9=82<.342?  2!!22222222222222222222222222222222222222222222222222?3@"? ?}!1AQa"q2???#B??RѰ$3br? %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz???????????????????????????????????ƒąƇȉʒӔՖטٚᢣ䥦稩걲

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
關於存取圖片(相片)問題
« 回覆 #22 於: 2006-03-19 21:31 »
先確定把一個 jpg 檔案抓出來看看能不能運作吧.

三個檔案 t.html, getpic.php, t.jpg
t.html:
代碼: [選擇]
<html>
<head><title>Test Jpeg</title></head>
<body>
<img src="getpic.php">
</body>
</html>


getpic.php:
代碼: [選擇]
<?php
header
&#40;"Content-Type&#58; image/jpg"&#41;;
header&#40;"Content-Disposition&#58; inline"&#41;;
echo file_get_contents&#40;"t.jpg"&#41;;
exit;
?>



這個我試過是可以顯示出正確的圖片.
先找一個正常的圖片來看看. (不要用你資料庫抓出來的)

如果可以 (不行我就不知道了, 也許你的 php 檔案有問題吧 (utf8? BOM?), 再把這個檔案用 base64 編碼後寫到資料庫. 然後再解碼寫成另一個檔案.
先確定讀出來的檔案與之前的一模一樣 (不一樣? 一定是中間過程有問題, 因為 base64 是可逆的, 編碼再解碼後一定是一樣的東西).

roderja

  • 懷疑的國中生
  • **
  • 文章數: 55
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #23 於: 2006-03-19 22:56 »
大大您好

我用小畫家編分別一個測試用的 GIF 和 JPG
直接引用大大的程式碼 儲存成utf8的格式
在IE瀏覽下 還是一個大叉叉耶
煩請指教 感謝

我的環境是
windows xp sp2 使用 xampp-win32-1.5.1.zip 套件

另外
可否請教大大您的環境與檔案儲存格式為呢?

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
關於存取圖片(相片)問題
« 回覆 #24 於: 2006-03-20 00:34 »
要不要另外找一台主機試試.

roderja

  • 懷疑的國中生
  • **
  • 文章數: 55
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #25 於: 2006-03-20 01:15 »
大大您好

不同的主機是指 不同的OS與不同的PHP與APACHE版本嗎
我在我朋友的電腦試過
狀況還是一樣耶

這兩台都是 windows xp sp2 使用 xampp-win32-1.5.1.zip 套件

煩請指導 感謝

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
關於存取圖片(相片)問題
« 回覆 #26 於: 2006-03-20 08:32 »
1. 不要用 utf-8.
2. 把 utf-8 的 BOM 移除.

自己找一下 BOM 是什麼, 不要再問了.

roderja

  • 懷疑的國中生
  • **
  • 文章數: 55
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #27 於: 2006-03-20 18:46 »
感謝大大指點
我TRY看看

roderja

  • 懷疑的國中生
  • **
  • 文章數: 55
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #28 於: 2006-10-13 11:44 »
當我用SOAP_CLIENT()得到image code ($image)後
除了用SESSION的方式傳給下面這個PHP之外
請問有沒有其他的方式將此圖片展示出來呢?
(echo '<img src="data:image/png;base64,'.$encoded.' ">'; 這種方式試過了不行 )

SESSION可以用
 可是就是有個問題
就是所有要展示的圖片都相同
UNSET好像沒有作用

試過將$image擺在URL裡頭當參數傳遞
可能太大了
無效

如何將這種$image 傳給下面這一個另外的PHP處理呢?

感謝各位大大

<?
header(" Content-Type: image/jpeg");
header(" Content-Disposition: inline");
echo base64_decode($image);
?>

roderja

  • 懷疑的國中生
  • **
  • 文章數: 55
    • 檢視個人資料
關於存取圖片(相片)問題
« 回覆 #29 於: 2006-10-13 19:57 »
AFD