如何在图像中显示二进制数据



实际上,我已经通过将<Binary data>保存在数据库中

HttpPostedFile PostedFile = Request.Files[m + 2];
byte[] fileData = null;
 using (var binaryReader = new BinaryReader(Request.Files[m + 2].InputStream))
 {
 fileData = binaryReader.ReadBytes(Request.Files[m + 2].ContentLength);
 }

现在,我想在图像中显示<Binary data>。我使用了一个类似于的位代码

ASPxImage objimg = new ASPxImage();
objimg.ID = "objimg" + (j + 1);
objimg.Width = 100;
objimg.Height = 100;
byte[] buffer = null;
buffer = (byte[])DtChoices.Rows[j]["COLUMN_IMAGE"];
MemoryStream ms = new MemoryStream(buffer);
objimg.Value = System.Drawing.Image.FromStream(ms);

但是,我无法显示图像。有人能帮我吗?

我没有使用DevExpress控件库,但从我可以收集的文档中,正确的类是ASPxBinaryImage。他们的网站上有一个例子http://www.devexpress.com/Support/Center/Example/Details/E1414

您的控制-

<dxe:ASPxBinaryImage ID="ASPxBinaryImage1" runat="server" Value='<%# ConvertOleObjectToByteArray(Eval("Image")) %>'></dxe:ASPxBinaryImage>

转换功能-

public partial class _Default : System.Web.UI.Page {
    const string BITMAP_ID_BLOCK = "BM";
    const string JPG_ID_BLOCK = "u00FFu00D8u00FF";
    const string PNG_ID_BLOCK = "u0089PNGrnu001an";
    const string GIF_ID_BLOCK = "GIF8";
    const string TIFF_ID_BLOCK = "II*u0000";
    const int DEFAULT_OLEHEADERSIZE = 78;
    public static byte[] ConvertOleObjectToByteArray(object content) {
        if (content != null && !(content is DBNull)) {
            byte[] oleFieldBytes = (byte[])content;
            byte[] imageBytes = null;
            // Get a UTF7 Encoded string version
            Encoding u8 = Encoding.UTF7;
            string strTemp = u8.GetString(oleFieldBytes);
            // Get the first 300 characters from the string
            string strVTemp = strTemp.Substring(0, 300);
            // Search for the block
            int iPos = -1;
            if (strVTemp.IndexOf(BITMAP_ID_BLOCK) != -1) {
                iPos = strVTemp.IndexOf(BITMAP_ID_BLOCK);
            } else if (strVTemp.IndexOf(JPG_ID_BLOCK) != -1) {
                iPos = strVTemp.IndexOf(JPG_ID_BLOCK);
            } else if (strVTemp.IndexOf(PNG_ID_BLOCK) != -1) {
                iPos = strVTemp.IndexOf(PNG_ID_BLOCK);
            } else if (strVTemp.IndexOf(GIF_ID_BLOCK) != -1) {
                iPos = strVTemp.IndexOf(GIF_ID_BLOCK);
            } else if (strVTemp.IndexOf(TIFF_ID_BLOCK) != -1) {
                iPos = strVTemp.IndexOf(TIFF_ID_BLOCK);
            }
            // From the position above get the new image
            if (iPos == -1) {
                iPos = DEFAULT_OLEHEADERSIZE;
            }
            //Array.Copy(
            imageBytes = new byte[oleFieldBytes.LongLength - iPos];
            MemoryStream ms = new MemoryStream();
            ms.Write(oleFieldBytes, iPos, oleFieldBytes.Length - iPos);
            imageBytes = ms.ToArray();
            ms.Close();
            ms.Dispose();
            return imageBytes;
        }
        return null;
    }
}

相关内容

  • 没有找到相关文章

最新更新