ASP.NET MVC 如何实现 => 在网站中显示图片,但是不可以保存 如题,想要显示一些图片在网页上,但是不能让用户去保存,当然 这并不绝对,用户可以截图不用发屏蔽邮件菜单的代码了,如果有swf插件相关的可以赐教下 听说用flash做显示 用户就不能保存图片了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 屏蔽右键或者用flash显示,不过是增加普通用户保存图片的难度。 flash的确可以防止保存图片,但别人可以想法下载你的flash,而且你不能走http(https例外),因为有各种抓包工具,而且现在的手机相机分辨率都那么高了,拍你张图片再剪辑下也不是难事。我觉得你还不如加强权限管理和打个水印比较实在 不谈(其实很简单的)通用桌面窗口截图方式,我们看看使用 webbrowser 如何将网页截图存档/// <summary>/// 下载网页,产生图片/// </summary>/// <param name="uri">要下载的网页地址。</param>/// <param name="width">初始窗口宽度,用来强制网页初始排版。</param>/// <param name="millisecondsTimeout">网页下载完毕,等待网页异步渲染的时间。</param>/// <param name="callback">回调,返回产生的位图对象。</param>public static void 网页生成图片(this Uri uri, int width, int millisecondsTimeout, Action<Bitmap> callback){ var brw = new WebBrowser { Width = width, ScrollBarsEnabled = false, ScriptErrorsSuppressed = false }; brw.DocumentCompleted += (s, e) => { if (brw.ReadyState == WebBrowserReadyState.Complete) { ThreadPool.QueueUserWorkItem(h => { Thread.Sleep(millisecondsTimeout); brw.BeginInvoke((Action)delegate { Rectangle r = brw.Document.Body.ScrollRectangle; brw.Height = r.Height; brw.Width = r.Width; var bitMapPic = new Bitmap(r.Width, r.Height); brw.DrawToBitmap(bitMapPic, r); brw.Dispose(); callback(bitMapPic); }); }); } }; brw.Navigate(uri);}假设我要截取 http://v.6.cn/824151 的图片,它几乎所有数据和flash 视频都是异步加载的,那么我延迟5秒钟再来截图,那么我可以写 网页生成图片(new Uri("http://v.6.cn/824151"), 1200, 5000, (img)=>{ 保存 img 到本地;});实际上只要客户端可以显示出来,人家随便查找网页上的 div 等等 element,随便自动截图,而且还能自动录像。 相关的.net 组件返回查找到的 HtmlElement,本身都可以直接转为位图。也就是说,其实使用 c# 代码找到一个 DIV 然后就能“1、2条语句”就转为图片。 那简单不用img就行了,随便弄个div之类的,用css设置background即可。右键里面就没有保存图片了。或者2层元素,在下层放图片,上层放链接,这样用户右键也只能点到上层的元素。 根殷数据库字段的值确定文本的颜色 把做好的静态模板转到。NET里~`不知道怎么入手拉 怎么获取menu选中子菜单的值啊 想生成统计图,但之前对此一无所知,请教帮助! 如何打包已完成的程序 初级魔法师学习课程标准 从asp转到asp.net后Property 语句的问题 asp.net 如何连接oracle数据库? 请问这个你们是怎么解决的?(ASP.NET) 怪!怪!怪! mvc视图子目录,该怎样配置和访问? mvc 5.0 页面跳转问题?
/// 下载网页,产生图片
/// </summary>
/// <param name="uri">要下载的网页地址。</param>
/// <param name="width">初始窗口宽度,用来强制网页初始排版。</param>
/// <param name="millisecondsTimeout">网页下载完毕,等待网页异步渲染的时间。</param>
/// <param name="callback">回调,返回产生的位图对象。</param>
public static void 网页生成图片(this Uri uri, int width, int millisecondsTimeout, Action<Bitmap> callback)
{
var brw = new WebBrowser { Width = width, ScrollBarsEnabled = false, ScriptErrorsSuppressed = false };
brw.DocumentCompleted += (s, e) =>
{
if (brw.ReadyState == WebBrowserReadyState.Complete)
{
ThreadPool.QueueUserWorkItem(h =>
{
Thread.Sleep(millisecondsTimeout);
brw.BeginInvoke((Action)delegate
{
Rectangle r = brw.Document.Body.ScrollRectangle;
brw.Height = r.Height;
brw.Width = r.Width;
var bitMapPic = new Bitmap(r.Width, r.Height);
brw.DrawToBitmap(bitMapPic, r);
brw.Dispose();
callback(bitMapPic);
});
});
}
};
brw.Navigate(uri);
}假设我要截取 http://v.6.cn/824151 的图片,它几乎所有数据和flash 视频都是异步加载的,那么我延迟5秒钟再来截图,那么我可以写 网页生成图片(new Uri("http://v.6.cn/824151"), 1200, 5000, (img)=>
{
保存 img 到本地;
});实际上只要客户端可以显示出来,人家随便查找网页上的 div 等等 element,随便自动截图,而且还能自动录像。
不用img就行了,随便弄个div之类的,用css设置background即可。右键里面就没有保存图片了。
或者2层元素,在下层放图片,上层放链接,这样用户右键也只能点到上层的元素。