1

无论如何将字节数组转换为图像并将其直接显示在图像控件中而不将其保存在磁盘上?

这是我到目前为止开发的代码:

    protected void btnShow_Click(object sender, System.EventArgs e)
    {
        Byte[] blobEncryptedImage = Signature.Get(txSaleGUID.Text);
        Crypto crypto = new Crypto("mypass");
        Byte[] decryptedImage = Encoding.ASCII.GetBytes(crypto.Decrypt(blobEncryptedImage));

        MemoryStream ms = new MemoryStream(decryptedImage);
        Image img = Image.FromStream(ms);
        //Image1.ImageUrl = System.Drawing.Image.FromStream(ms);
    }

    public static Image byteArrayToImage(byte[] data)
    {
        using (System.IO.MemoryStream ms = new System.IO.MemoryStream(data))
        {
            return new System.Drawing.Bitmap(Image.FromStream(ms));
        }
    }

更新 1

这是我的加密课程:

    public class Crypto
{
    private ICryptoTransform rijndaelDecryptor;
    // Replace me with a 16-byte key, share between Java and C#
    private static byte[] rawSecretKey = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                                          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

    public Crypto(string passphrase)
    {
        byte[] passwordKey = encodeDigest(passphrase);
        RijndaelManaged rijndael = new RijndaelManaged();
        rijndaelDecryptor = rijndael.CreateDecryptor(passwordKey, rawSecretKey);
    }

    public string Decrypt(byte[] encryptedData)
    {
        byte[] newClearData = rijndaelDecryptor.TransformFinalBlock(encryptedData, 0, encryptedData.Length);
        return Encoding.ASCII.GetString(newClearData);
    }

    public string DecryptFromBase64(string encryptedBase64)
    {
        return Decrypt(Convert.FromBase64String(encryptedBase64));
    }

    private byte[] encodeDigest(string text)
    {
        MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
        byte[] data = Encoding.ASCII.GetBytes(text);
        return x.ComputeHash(data);
    }
}

任何人都可以提供线索吗?

4

2 回答 2

2

使用 George 在他的评论中所说的内容,您需要有一个页面,或者最好是一个简单的处理程序 (.ashx),它将在响应流中返回图像。然后,您可以将您拥有的代码放入该处理程序中,但不是将字节数组转换为图像,而是将字节写入响应流。

然后,在您的 .aspx 页面中,设置图像的 URL 以调用该处理程序。

例子: <img src="~/GetImage.ashx?ImageID=1" />

GetImage.ashx 是将返回图像字节的处理程序。

于 2013-05-15T15:12:20.397 回答
0

您可以使用以下方法将图像数据直接嵌入到 html 中:

<img src="data:image/gif;base64,RAAA...more data.....">

如果您有兴趣这样做,请查看该链接: Html - 将图像直接嵌入 html (old school style)

但我认为使用处理程序更好,因为我不确定每个浏览器都接受这种事情。

于 2013-05-15T15:18:03.560 回答