http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 7453|回复: 2

[其他] asp.net利用WebBrowser在服务器上截图为空白

[复制链接]
发表于 2013-12-30 15:37:01 | 显示全部楼层 |阅读模式
我用jqplot做了一个图形报表,要求要保存图片,所以用WebBrowser截图。在我自己电脑(xp sp3,IIS5.1)使用正常,可以保存图片;但是放到服务器(window server 2008 R2 standard,IIS6.1 )上就不行了,图片可以出来,但是白的,什么都没有。在网上找了好久,都没找出原因,飞哥,求救!
WebBrowser类如下
public class WebSiteThumbnail
{
    public WebSiteThumbnail()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    Bitmap m_Bitmap;
    string m_Url;
    int m_BrowserWidth, m_BrowserHeight, m_ThumbnailWidth, m_ThumbnailHeight;

    public WebSiteThumbnail(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)
    {
        m_Url = Url;
        m_BrowserHeight = BrowserHeight;
        m_BrowserWidth = BrowserWidth;
        m_ThumbnailWidth = ThumbnailWidth;
        m_ThumbnailHeight = ThumbnailHeight;
    }
    public static Bitmap GetWebSiteThumbnail(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)
    {
        WebSiteThumbnail thumbnailGenerator = new WebSiteThumbnail(Url, BrowserWidth, BrowserHeight, ThumbnailWidth, ThumbnailHeight);
        return thumbnailGenerator.GenerateWebSiteThumbnailImage();
    }
    public Bitmap GenerateWebSiteThumbnailImage()
    {
        Thread m_thread = new Thread(new ThreadStart(_GenerateWebSiteThumbnailImage));
        m_thread.SetApartmentState(ApartmentState.STA);
        m_thread.Start();
        m_thread.Join();
        //_GenerateWebSiteThumbnailImage();
        return m_Bitmap;
    }
    private void _GenerateWebSiteThumbnailImage()
    {
        WebBrowser m_WebBrowser = new WebBrowser();
        m_WebBrowser.ScrollBarsEnabled = false;
        m_WebBrowser.Navigate(m_Url);
        m_WebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);
        while (m_WebBrowser.ReadyState != WebBrowserReadyState.Complete)
        {
            Application.DoEvents();
        }
        m_WebBrowser.Dispose();
    }
    private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        WebBrowser m_WebBrowser = (WebBrowser)sender;
        //m_WebBrowser.Document.InvokeScript("ShowImage");
        m_WebBrowser.ClientSize = new Size(this.m_BrowserWidth, this.m_BrowserHeight);
        m_WebBrowser.ScrollBarsEnabled = false;
        m_Bitmap = new Bitmap(m_WebBrowser.Bounds.Width, m_WebBrowser.Bounds.Height);
        m_WebBrowser.BringToFront();
        m_WebBrowser.DrawToBitmap(m_Bitmap, m_WebBrowser.Bounds);
        m_Bitmap = (Bitmap)m_Bitmap.GetThumbnailImage(m_ThumbnailWidth, m_ThumbnailHeight, null, IntPtr.Zero);
    }
}
调用
Bitmap m_Bitmap = WebSiteThumbnail.GetWebSiteThumbnail(url, 1200, 650, 1200, 650);
MemoryStream ms = new MemoryStream();
m_Bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);//JPG、GIF、PNG等均可
System.Drawing.Image postImage = System.Drawing.Image.FromStream(ms);
postImage.Save(path, System.Drawing.Imaging.ImageFormat.Jpeg);



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2013-12-30 15:45:04 | 显示全部楼层
jqpolt生成如下:
function ShowImage(){
                   var data = $("#hid_data").val();
                    data = eval(data);
                    $.jqplot('chart1', [data], {
                        title: '客戶資料合格率報表',
                        legend: { show: true, location: 'ne' },
                        series: [{ label: lbtext }],
                        seriesDefaults: {
                            renderer: $.jqplot.BarRenderer,
                            pointLabels: {
                                show: true,
                                location: 'e',
                                edgeTolerance: -15
                            },
                            shadow:false,
                            //shadowAngle: 135,
                            rendererOptions: {
                                barDirection: 'horizontal',
                                barWidth:25
                            }                                               
                        },
                        axesDefaults:{
                            tickOptions:{
                                 fontSize:'13px'
                            }
                        },
                        axes: {
                            yaxis: {
                                renderer: $.jqplot.CategoryAxisRenderer
                            }
                        }
                    });
}
data在后台生成
发表于 2015-6-12 21:43:34 | 显示全部楼层
我都要哭了·跟你是一样的问题· 在服务器上 刚开始还正常 突然就不用了 你有没有解决 怎么解决的?给我会QQ623192779好不 非常感谢····
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-24 04:21

© 2014-2021

快速回复 返回顶部 返回列表