Cod*_*ode 4 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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供有关如何使用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;
}
Run Code Online (Sandbox Code Playgroud)
使用完拇指后,请务必将其丢弃。
| 归档时间: |
|
| 查看次数: |
6079 次 |
| 最近记录: |