有没有办法在没有路径的情况下显示图像。我的意思是不使用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();
答案 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所解释的,任何高级用户都可以获得图像。然而,人们做了几件事来阻止这种形式的普通用户。
<img src = "">
也可能有其他方式。仅供您考虑。
答案 5 :(得分:1)
在页面中呈现任何内容都需要HTML。这也意味着它在代码中的某处可见 - 一些直接可见,一些需要调试工具来拦截。
你可以让人们不可能通过以下方式窃取图像(有些不理想,但做的工作)
使用flash / silverlight作为一个框架 - 虽然不理想,它确实可以帮助您防止右键单击并保存。你也看不到闪光源。
使用背景图片 - 大小足以容纳图像的div(因为div依赖于显式尺寸或子尺寸来拉伸它)。可以在CSS上查看网址(除非它是动态放置的)
使用具有“盾牌”的图像 - 为此,创建容器div并将图像放入其中。在同一个容器中,有一个覆盖图像的div(绝对位置,z-high z-index)。这可以防止“右键单击保存”方法。但图像路径在源中(除非它也是动态放置的)
你可能会想到画布,但画布就像一个位图(因此仍然是一张图片),所以仍然不能从那里开始。
所有这些都不是万无一失的方法。你可以避免人们盗取拥有图像的唯一方法就是实际使用水印。他们可能会保存但不能拥有它,因为它会有一个水印(如你的名字)。
答案 6 :(得分:1)
您可以在<div *ngIf="priceInput.hasError">Your Error message</div>
标记中将图像的base64作为src。
例如:
<img>