关于图片下载的问题

zhoudengpan102 2017-02-28 10:04:10
https://image.ricebook.com/business/19902556223222?imageView2/1/w/600/h/400/interlace/1/format/webp

这个地址的图片如何保存下来,麻烦指教下?

我通过webrequest拿到byte[] 数组,保存为图片但无法打开,另存为也无法打开,请问下如何下载这种图片。

...全文
282 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoudengpan102 2017-03-09
  • 打赏
  • 举报
回复
已解决,可在该地址下载相关dll。 http://webp.codeplex.com/ http://webp.codeplex.com/releases/view/53417
  • 打赏
  • 举报
回复
我说的截屏,不是截整个屏幕。 根据你的开发工具所支持的 浏览工具而定,通常你为窗口中某个控件、或者网页中某个元素的以截屏的方式保存为图片,只要写3、4行代码而已。不用管它用什么来显示,只要看到,就能转为图片。
zhoudengpan102 2017-02-28
  • 打赏
  • 举报
回复
1、https://image.ricebook.com/business/19902556223222?imageView2/1/w/600/h/400 2、https://image.ricebook.com/business/19902556223222?imageView2/1/w/600/h/400/interlace/1/format/webp 1、把后面的 /interlace/1/format/webp去掉保存下来的就没问题,是jpg格式。 2、第二链接 保存下来的是RIFF格式。 RIFF如何转成jpg,有人有相关代码吗
  • 打赏
  • 举报
回复
只要人眼能看见,没有不能截屏采集的。 简单一点。
  • 打赏
  • 举报
回复
这种图,随便你的编程工具支持 webbrowser系列浏览器的,然后自动截屏。
xdashewan 2017-02-28
  • 打赏
  • 举报
回复
引用 4 楼 zhoudengpan102 的回复:
直接在浏览器上另存为 也是打不开的。
用截包工具查看http头的类型是什么
Poopaye 2017-02-28
  • 打赏
  • 举报
回复
我用xnview就能打开……
Poopaye 2017-02-28
  • 打赏
  • 举报
回复
楼主如果只会用记事本那确实打不开
zhoudengpan102 2017-02-28
  • 打赏
  • 举报
回复
是RIFF的格式,如何转换成jpg呢?
zhoudengpan102 2017-02-28
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:
[quote=引用 2 楼 zhoudengpan102 的回复:] byte数组不是防盗链的话,感觉他们做过处理了。
无论怎么处理,如果你拿到的是图片的数据,没理由转不了图片,你用浏览器打开能保存吗?[/quote] 直接在浏览器上另存为 也是打不开的。
xdashewan 2017-02-28
  • 打赏
  • 举报
回复
引用 2 楼 zhoudengpan102 的回复:
byte数组不是防盗链的话,感觉他们做过处理了。
无论怎么处理,如果你拿到的是图片的数据,没理由转不了图片,你用浏览器打开能保存吗?
zhoudengpan102 2017-02-28
  • 打赏
  • 举报
回复
https://image.ricebook.com/business/19902556223222?imageView2/1/w/800/h/600/interlace/1/format/webp 这个地址感觉是做了处理的 宽高是可以设置的,比如600改成800,400 改成 600,生成的就不一样的。 byte数组不是防盗链的话,感觉他们做过处理了。
xdashewan 2017-02-28
  • 打赏
  • 举报
回复
webrequest拿到byte[]数组,你得先确认byte数组内容是什么,也许不是图片而是防盗链的一段话呢
qq_36769535 2017-02-28
  • 打赏
  • 举报
回复
刚才太匆忙了,没写清楚。 重写了一下,该解决你的问题了吧

 private void button1_Click(object sender, EventArgs e)
        {
            Random seed = new Random();
            WebRequest webreq = WebRequest.Create("https://image.ricebook.com/business/19902556223222?imageView2/1/w/600/h/400/interlace/1/format/webp" + seed.NextDouble());
            WebResponse webres = webreq.GetResponse();
            Stream stream = webres.GetResponseStream();
            Image image;
            image = Image.FromStream(stream);
            /*
            //这里直接显示图像了
            //pictureBox1.Image = img;
            //直接转换为png图像
            image.Save(@"123.png", ImageFormat.Png);
            */


            //按题目转为byte[]
            MemoryStream mstream = new MemoryStream();
            image.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);
            byte[] byData = new Byte[mstream.Length];
            mstream.Position = 0;
            mstream.Read(byData, 0, byData.Length); mstream.Close();

            //按题目byte[]转为图像
            MemoryStream ms = new System.IO.MemoryStream(byData);
            Image img = System.Drawing.Image.FromStream(ms);
            //转换为平图像
            img.Save(@"123.png", ImageFormat.Png);
            //显示出来
            pictureBox1.Image = img;
        }
闭包客 2017-02-28
  • 打赏
  • 举报
回复
就这么下载,没有防盗链。 不过你要选对解码器。
qq_36769535 2017-02-28
  • 打赏
  • 举报
回复

private void button3_Click(object sender, EventArgs e)
        {
            Random seed = new Random();
            WebRequest webreq = WebRequest.Create("https://image.ricebook.com/business/19902556223222?imageView2/1/w/600/h/400/interlace/1/format/webp" + seed.NextDouble());
            WebResponse webres = webreq.GetResponse();
            Stream stream = webres.GetResponseStream();
            Image image;
            image = Image.FromStream(stream);
            stream.Close();
            pictureBox1.Image = image;
        }
已测

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧