繁体   English   中英

如何在C#中将图像转换为base64string

[英]how to convert an image to base64string in c#

我使用的辅助方法是...

private async Task<string> ToBase64(byte[] image, uint height, uint width, double dpiX = 96, double dpiY = 96)
    {
        var encoded = new InMemoryRandomAccessStream();
        var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, encoded);
        encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, height, width, dpiX, dpiY, image);
        await encoder.FlushAsync();
        encoded.Seek(0);

        var bytes = new byte[encoded.Size];
        await encoded.AsStream().ReadAsync(bytes, 0, bytes.Length);

        return Convert.ToBase64String(bytes);
    }

    private byte[] ImageToByteArray(WriteableBitmap wbm)
    {
        using (Stream stream = wbm.PixelBuffer.AsStream())
        using (MemoryStream memoryStream = new MemoryStream())
        {
            stream.CopyTo(memoryStream);
            return memoryStream.ToArray();
        }
    }

选择图像并将其转换为可写位图的代码是

 WriteableBitmap image;
        FileOpenPicker openPicker = new FileOpenPicker();
        openPicker.ViewMode = PickerViewMode.Thumbnail;
        openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
        openPicker.FileTypeFilter.Add(".jpg");
        openPicker.FileTypeFilter.Add(".jpeg");
        openPicker.FileTypeFilter.Add(".png");
        StorageFile file = await openPicker.PickSingleFileAsync();
        if (file != null)
        {
            var bitmp = new BitmapImage();
            // Application now has read/write access to the picked file
            var filePath = await file.OpenReadAsync();
            bitmp.SetSource(filePath);
            proPic.Source = bitmp;
            using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite))
            {
                image = new WriteableBitmap(1, 1);
                image.SetSource(stream);
            }
            imageT = await ToBase64(ImageToByteArray(image), 100, 100, 96, 96);
            pic = 1;
        }
        else
        {
            //OutputTextBlock.Text = "Operation cancelled.";
        } 

当我比较base64string时,我从带有http://www.dailycoding.com/utils/converter/imagetobase64.aspx的辅助方法中获得了两者。

将文件更改为•base64

public async Task<string> GetBase64(string name)
        {
            StorageFolder folder = ApplicationData.Current.LocalFolder;
            StorageFile file = await folder.GetFileAsync(name);
            var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(file.Path));

            byte[] fileBytes = null;
            using (var stream = await file.OpenReadAsync())
            {
                fileBytes = new byte[stream.Size];
                using (var reader = new DataReader(stream))
                {
                    await reader.LoadAsync((uint)stream.Size);
                    reader.ReadBytes(fileBytes);
                }
            }

           return Convert.ToBase64String(fileBytes);
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM