【问题标题】:Displaying image in PictureBox from a HTTP response (image/jpeg)从 HTTP 响应 (image/jpeg) 在 PictureBox 中显示图像
【发布时间】:2013-08-13 03:00:49
【问题描述】:

所以我需要向一个返回图像的 PHP 页面发送请求,该图像不能直接使用 URL 读取(当然可以,但从技术上讲,它只包含图像数据,而不是以 .jpg 结尾的页面)...

因此我需要从响应中读取图像(返回页面给我的Content-Type: image/jpeg,它直接显示图像数据(就像您在记事本中打开图像时一样 - 由符号组成......)

如何才能将此图像数据转换为有效图像?

我尝试使用响应中的字节将它们转换为图像;使用这个:

    private Bitmap ByteToImage(byte[] blob)
    {
        MemoryStream mStream = new MemoryStream();
        byte[] pData = blob;
        mStream.Write(pData, 0, Convert.ToInt32(pData.Length));
        Bitmap bm = new Bitmap(mStream, false);
        mStream.Dispose();
        return bm;
    }

byte[] imageBytes = Encoding.UTF8.GetBytes(post(imagelink, ""));

但这只会给我一个 ArgumentException。

【问题讨论】:

    标签: c# image jpeg content-type


    【解决方案1】:

    您可以使用WebClientHttpWebRequestHttpClient下载图片

    using (WebClient wc = new WebClient())
    {
        var img = ByteToImage(wc.DownloadData(url));
    }
    

    【讨论】:

    • 嗯..这只是使图片框不可见(默认图像是错误消息)
    • @Adam 看看wc.DownloadData(url) 返回什么。它真的是图像还是错误消息等。我不知道服务器返回什么......
    • 我试过Console.WriteLine(wc.DownloadData(imagelink)); 但那只是打印了System.Byte[](我做错了吗?我不是一个很好的程序员)
    • @Adam 我从您的方法中删除了 mStream.Dispose(); 并使用了该链接 http://i.cdn.turner.com/cnn/.e/img/3.0/global/header/intl/CNNi_Logo.png ,它有效....
    • 开始工作了,问题是我没有在using(){ } 部分中设置图像...非常感谢您的帮助,I4V!
    猜你喜欢
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    相关资源
    最近更新 更多