2011-03-17 118 views
4

我有一个网页源代码的字符串; 如何将其保存在字节[]中作为图像?如何将网页保存为图片

+0

你的意思'的byte []'?并且是图片的网址,还是您需要呈现的网站? – Aidiakapi 2011-03-17 10:36:28

+0

是字节,我有一个网页的HTML洞。作为Pagesource保存在sprint中。我需要从它制作一个图像并保存为ms sql数据库中的字节[]。 – 2011-03-17 10:38:00

+0

http://stackoverflow.com/questions/2434156/webbrowser-drawtobitmap-or-other-methods – 2011-03-17 10:40:23

回答

4

这里:http://pietschsoft.com/post/2008/07/C-Generate-WebPage-Thumbmail-Screenshot-Image.aspx

是如何使用WebBrowser.DrawToBitmap方法的例子。

生成位图后,可以使用任何您想要的编码进行压缩。
这是从MSDN如何压缩到PNG(无损和小)的例子:
How to: Encode and Decode a PNG Image

祝你好运:)

编辑:
为了得到字节数组,你可能希望将内存流用作输出流。

这里有一个如何类似的东西会工作的工作例如:

public static void Main(string[] args) 
{ 
    byte[] test = new byte[] { 2, 5, 6, 1, 9 }; 
    MemoryStream ms = new MemoryStream(); 
    ms.Write(test, 0, 5); 

    byte[] image = new byte[ms.Length]; 
    Buffer.BlockCopy(ms.GetBuffer(), 0, image, 0, (int)ms.Length); 
    for (int i = 0; i < ms.Length; i++) 
     Console.WriteLine(image[i]); 
    Console.ReadKey(); 
} 

这里有一个如何它会在你的情况的示例:

public static void Main(string[] args) 
{ 
    MemoryStream ms = new MemoryStream(); 
    // You have a PNGBitmapEncoder, and you call this: 
    encoder.Save(ms); 

    byte[] image = new byte[ms.Length]; 
    Buffer.BlockCopy(ms.GetBuffer(), 0, image, 0, (int)ms.Length); 
    for (int i = 0; i < ms.Length; i++) 
     Console.WriteLine(image[i]); 
    Console.ReadKey(); 
} 
2

你可以看看following articlethis one也说明了截取网页截图并将其保存为图片的一种方式。 WPFChromium组件还允许您在不依赖Internet Explorer的情况下实现此目的。

+2

有趣的项目参考。 – 2011-03-17 10:49:10