2012-02-10 114 views
2

有沒有什麼方法可以顯示沒有路徑的圖像。我的意思是不使用HTML標記,我想用PHP來顯示圖像。因爲如果我使用HTML,則有人可以保存或共享該圖像。顯示圖像時不顯示文件路徑

編輯:對不起,我的問題不清楚。我不是說要防止保存圖像。我的意思是沒有在URI或HTML上顯示文件路徑「/path/to/image.jpg」。因爲我不希望用戶在我的網站上覆制並共享包含該圖片的鏈接。分享該圖片的唯一方法是「將圖片另存爲」並分享。無論如何,謝謝大家。

這是我的解決方案:

<?php 
$image = 'new.png'; 
$content = file_get_contents($image); 
header('Content-Type: image/jpeg'); 
echo $content; exit(); 

回答

3

這是我的解決方案:

<?php 
$image = 'new.png'; 
$content = file_get_contents($image); 
header('Content-Type: image/jpeg'); 
echo $content; exit(); 
+0

是這種方式工作正常嗎?我也需要這個東西! – 2013-10-11 17:59:43

3

即使你輸出與PHP的圖像,這將需要使用HTML。無法阻止用戶保存圖像。

您可以嘗試使用圖像作爲帶有CSS的background-image,這將防止非高級用戶保存圖像,但任何知道如何檢查DOM或讀取CSS的人都不會有任何問題將其保存。

考慮到這一點 - 當用戶看到頁面上的圖像時,他們的瀏覽器已經將該文件下載到用戶的硬盤上。

+0

這個怎麼樣? <?php $ image ='image/test.jpg'; $ content = file_get_contents($ image); header('Content-Type:image/jpeg'); echo $ content; 我可以顯示圖像但不顯示其路徑。 – Emerald214 2012-02-10 06:37:50

+0

是的,但用戶仍然可以從他們訪問的PHP文件中下載該文件。 – dtbarne 2012-02-10 16:21:33

+0

我使用/控制器/操作並檢查成員。他們無法分享鏈接。他們只能做「圖片另存爲」並分享圖片。 – Emerald214 2012-02-11 16:47:55

1

由於dtbarne解釋任何高級用戶都可以獲取圖像。然而,人們會做一些事情來阻止這種形式的普通用戶。

  1. 禁用右鍵單擊
  2. 顯示在彈出沒有工具欄
  3. 集圖像與CSS隱藏在我們在<img src = "">
  4. 加載圖像使用使用javascript
  5. 生成動態圖像的路徑使用PHP。它在生成圖像之前需要檢查身份驗證和時間戳。

也可能有其他的方法。只是爲了您的考慮。

2

如果瀏覽器可以查看它,用戶可以保存它。這條規則沒有辦法。

唯一的例外是,如果您使用1x1像素div s圖像中的每個像素的顏色重新創建圖像,這是非常笨手笨腳的,只有在圖像非常小時纔可用。

1

呈現頁面中的任何內容都需要以某種方式呈現HTML。這也意味着它在代碼的某處可見 - 有些直接可見,有些需要調試工具來攔截。

,你可以把它不可能爲人們偷圖像通過以下方式(有些不理想,但不工作)

  1. 使用閃存/ Silverlight的一個框架 - 雖然並不理想,但它幫助你可以阻止那些右鍵單擊並保存。您也無法查看閃光燈源。

  2. 使用背景圖像 - 尺寸足以適合其中的圖像的div(因爲div依賴於明確的尺寸或兒童的尺寸來伸展它)。該URL可以在CSS上查看(除非它是動態放置的)

  3. 使用具有「屏蔽」的圖像 - 爲此,創建一個容器div並將圖像放入其中。在同一個容器中,有一個覆蓋圖像的div(絕對位置,z-高z-索引)。這可以防止「右鍵單擊保存」方法。但圖片的路徑是在源(除非它是動態放置爲好)

你可能會認爲帆布,但帆布就像是一個位圖(因此畫面靜止)靜得從那裏不走。

所有這些都不是一個傻瓜式的方法。只有這樣才能避免竊取擁有圖像的人實際使用水印。他們可能會保存,但不能擁有它,因爲它會有水印(如你的名字)。

1

如果客戶端可以看到您的圖片,用戶可以保存它。

1

你可以給你的形象,SRC的BASE64在<img>標籤。 例如:

<img src="data:image/png;base64,--your 64--" alt="Red dot" />