如何将Base64图像字符串转换为图像以及要使用的文件扩展名

时间:2014-02-07 08:23:37

标签: c# base64 winrt-xaml

说,我不知道这个Base64图像字符串的图像文件扩展名   从webservice返回。

如何为WinRT处理这些?

  1. 将Base64字符串转换为图像后使用哪种类型的图像文件扩展名?

  2. 如何将此base64图像字符串转换为图像?

  3. 使用WebService检索数据;

    foreach( var ws_item in Results)
    {
       InsertItems(ws_item.Picture , ws_item.No, ws_item.Description .... )
    }
    
    void InsertItems( string pictureB64String ,..... ) 
    {
       //-- for image :
    
       string _strPicture = PictureB64String;
    
       //-- convert this base64 string into image and store in a Folder call ImagesFolder 
    
       ConvertBase64ToImage(_strPicture )
    }
    
    void ConvertBase64ToImage(string strPic)
    {
    }
    

1 个答案:

答案 0 :(得分:0)

我想最好的转换方法是先从字节数组中获取de mime类型后转换为字节数组

样品:

     byte[] image = Convert.FromBase64String(content);
     string extensao = GetMimeFromBytes(image);


public static int MimeSampleSize = 256;

        public static string DefaultMimeType = "application/octet-stream";

        [DllImport(@"urlmon.dll", CharSet = CharSet.Auto)]
        private extern static uint FindMimeFromData(
            uint pBC,
            [MarshalAs(UnmanagedType.LPStr)] string pwzUrl,
            [MarshalAs(UnmanagedType.LPArray)] byte[] pBuffer,
            uint cbSize,
            [MarshalAs(UnmanagedType.LPStr)] string pwzMimeProposed,
            uint dwMimeFlags,
            out uint ppwzMimeOut,
            uint dwReserverd
        );

        public static string GetMimeFromBytes(byte[] data)
        {
            try
            {
                uint mimeType;
                FindMimeFromData(0, null, data, (uint)MimeSampleSize, null, 0, out mimeType, 0);

                var mimePointer = new IntPtr(mimeType);
                var mime = Marshal.PtrToStringUni(mimePointer);
                Marshal.FreeCoTaskMem(mimePointer);

                return mime ?? DefaultMimeType;
            }
            catch
            {
                return DefaultMimeType;
            }
        }