2012-02-10 66 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" />