c# - 从 base64string 生成缩略图 C#

标签 c# base64 drawing thumbnails

我正在尝试从 base64string 生成缩略图。我将图像存储在一个表中,并尝试从存储的 base64string 生成缩略图。

如果我提供图像的路径,我可以生成缩略图,但这对我来说不起作用。

这是从图像路径生成缩略图的工作解决方案:

protected void GenerateThumbnail(object sender, EventArgs e)
{
        string path = Server.MapPath("../src/img/myImage.png");
        System.Drawing.Image image = System.Drawing.Image.FromFile(path);
        using (System.Drawing.Image thumbnail = image.GetThumbnailImage(100, 100, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero))
        {
            using (MemoryStream memoryStream = new MemoryStream())
            {
                thumbnail.Save(memoryStream, ImageFormat.Png);
                Byte[] bytes = new Byte[memoryStream.Length];
                memoryStream.Position = 0;
                memoryStream.Read(bytes, 0, (int)bytes.Length);
                string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
                Image2.ImageUrl = "data:image/png;base64," + base64String;
                Image2.Visible = true;
            }
        }
}

谁能就如何使用 base64string 而不是生成缩略图的图像路径提供任何建议?

最佳答案

假设 b64 是 base64 字符串,您可以将其转换为字节数组并使用它来构造起始图像。

byte[] bytes = Convert.FromBase64String(b64);
using (MemoryStream ms = new MemoryStream(bytes))
{
    Bitmap thumb = new Bitmap(100, 100);
    using (Image bmp = Image.FromStream(ms))
    {
        using (Graphics g = Graphics.FromImage(thumb))
        { 
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g.CompositingQuality = CompositingQuality.HighQuality;
            g.SmoothingMode = SmoothingMode.HighQuality;
            g.DrawImage(bmp, 0, 0, 100, 100);
        }
    }
    // a picturebox to show/test the result
    picOut.Image = thumb;
}

用完拇指后一定要把它扔掉。

关于c# - 从 base64string 生成缩略图 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35021737/

相关文章:

android - 我的 paintview android 中的重做撤消操作问题

c# - 不显示 C# 的扩展字符

c# - 有没有办法将字符串转换为类型?

c# - 图像源不会显示图片

c++ - 如何将 XImage 保存为 PNG 格式的 base64 字符串?

JavaFX:通过点击两次鼠标在 Canvas 上绘制一个矩形

c# - 如何使用 .NET Core 绘图?

c# - 使用 Smtp.mail.microsoftonline.com 发送电子邮件

java - 在 Java 中解码 Base64 字符串

swift - 为什么 Base 64 编码不起作用?