C# 如何将Base64图像字符串转换为图像以及要使用的文件扩展名
比如,我不知道这个Base64图像字符串的图像文件扩展名 从webservice返回 WinRT如何处理这些问题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
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
来实现这一点。