显示图像而不显示其文件路径

时间:2012-02-10 06:19:26

标签: php

有没有办法在没有路径的情况下显示图像。我的意思是不使用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();

7 个答案:

答案 0 :(得分:4)

即使您使用PHP输出图像,也需要使用HTML。无法阻止用户保存图像。

您可以尝试将图像用作带有CSS的background-image,这会阻止非高级用户保存图像,但是任何知道如何检查DOM或读取CSS的人都不会有任何问题保存它

考虑到这一点 - 当用户在页面上看到图像时,他们的浏览器已经将文件下载到用户的硬盘上。

答案 1 :(得分:3)

如果浏览器可以查看它,则用户可以保存它。没有办法解决这条规则。

唯一的例外是如果你使用图像中每个像素颜色的1x1像素div重新创建图像,这是极其笨重的,只有在图像非常严重时才能使用小。

答案 2 :(得分:3)

这是我的解决方案:

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

答案 3 :(得分:2)

如果客户端可以看到您的图像,用户无论如何都可以保存它。

答案 4 :(得分:1)

正如dtbarne所解释的,任何高级用户都可以获得图像。然而,人们做了几件事来阻止这种形式的普通用户。

  1. 禁用右键单击
  2. 在没有工具栏的弹出窗口中显示
  3. 使用CSS设置图片以隐藏我们在<img src = "">
  4. 中使用的路径
  5. 使用javascript加载图片
  6. 使用PHP生成动态图像。在生成映像之前,它需要检查身份验证和时间戳。
  7. 也可能有其他方式。仅供您考虑。

答案 5 :(得分:1)

在页面中呈现任何内容都需要HTML。这也意味着它在代码中的某处可见 - 一些直接可见,一些需要调试工具来拦截。

你可以让人们不可能通过以下方式窃取图像(有些不理想,但做的工作)

  1. 使用flash / silverlight作为一个框架 - 虽然不理想,它确实可以帮助您防止右键单击并保存。你也看不到闪光源。

  2. 使用背景图片 - 大小足以容纳图像的div(因为div依赖于显式尺寸或子尺寸来拉伸它)。可以在CSS上查看网址(除非它是动态放置的)

  3. 使用具有“盾牌”的图像 - 为此,创建容器div并将图像放入其中。在同一个容器中,有一个覆盖图像的div(绝对位置,z-high z-index)。这可以防止“右键单击保存”方法。但图像路径在源中(除非它也是动态放置的)

  4. 你可能会想到画布,但画布就像一个位图(因此仍然是一张图片),所以仍然不能从那里开始。

    所有这些都不是万无一失的方法。你可以避免人们盗取拥有图像的唯一方法就是实际使用水印。他们可能会保存但不能拥有它,因为它会有一个水印(如你的名字)。

答案 6 :(得分:1)

您可以在<div *ngIf="priceInput.hasError">Your Error message</div> 标记中将图像的base64作为src。 例如:

<img>