Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将Base64图像字符串转换为图像以及要使用的文件扩展名_C#_Base64_Winrt Xaml - Fatal编程技术网

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

C# 如何将Base64图像字符串转换为图像以及要使用的文件扩展名,c#,base64,winrt-xaml,C#,Base64,Winrt Xaml,比如,我不知道这个Base64图像字符串的图像文件扩展名 从webservice返回 WinRT如何处理这些问题 将Base64字符串转换为图像后要使用哪种类型的图像文件扩展名 如何将此base64图像字符串转换为图像 利用WebService检索数据 foreach( var ws_item in Results) { InsertItems(ws_item.Picture , ws_item.No, ws_item.Description .... ) } void InsertIt

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

WinRT如何处理这些问题

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

  • 如何将此base64图像字符串转换为图像

  • 利用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)
    {
    }
    

    我想最好的转换方法是首先将其转换为字节数组,然后从字节数组中获取反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;
                }
            }
    

    好的,您可以尝试将图像加载到
    位图解码器
    (该解码器应该能够处理几乎任何类型的图像),然后将其编码到您想要的任何类型的文件中。这是Base64字符串,它来自Web服务。如果你能告诉我如何完成这项任务,我将不胜感激。我不会为你做这件事,但我会描述一下步骤。首先,退房。注意静态
    CreateAsync
    方法。如果您阅读的方法不接受
    Guid
    ,您会注意到它会自动选择正确的解码器。然后需要做的是将base64
    字符串
    转换为
    irandomaccesstream
    。我可能会使用内置的Windows运行时互操作扩展和
    CryptographicBuffer.CreateFromBase64String
    来实现这一点。