【问题标题】:Base64 String from Bitmap来自位图的 Base64 字符串
【发布时间】:2013-09-17 13:45:02
【问题描述】:

我正在降低图像的质量并将其保存到文件系统中。我希望以 Base64 字符串格式返回图像的新数据。我该怎么做?

代码:

var bitmap = new Bitmap(Base64ToImage(base64String));
var jgpEncoder = GetEncoder(ImageFormat.Jpeg);

var myEncoder = Encoder.Quality;
var myEncoderParameters = new EncoderParameters(1);

var myEncoderParameter = new EncoderParameter(myEncoder, Convert.ToInt64(75L));
myEncoderParameters.Param[0] = myEncoderParameter;

bitmap.Save(filePath, jgpEncoder, myEncoderParameters);

更新:

以下是合适的方法吗?

// Convert the image to byte[]
var stream = new MemoryStream();
bitmap.Save(stream, ImageFormat.Jpg);
var imageBytes = stream.ToArray();

// Convert byte[] to Base64 String
var reducedQuality = Convert.ToBase64String(imageBytes);
return reducedQuality;

【问题讨论】:

    标签: c# string bitmap base64


    【解决方案1】:

    不要将其保存到文件中,而是将其保存到MemoryStream。然后你可以使用:

    string base64 = Convert.ToBase64String(stream.ToArray());
    

    并将原始二进制数据写入文件:

    using (var output = File.Create(filePath))
    {
        stream.CopyTo(output);
    }
    

    或者,您可以将ToBase64TransformCryptoStream 一起使用:

    using (var output = new CryptoStream(File.Create(filePath),
                                         new ToBase64Transform())
    {
        bitmap.Save(output, jpgEncoder, myEncoderParameters);
    }
    

    那应该直接将它写入文件as base64。

    【讨论】:

    • 我需要两者都做。将其保存到文件并获取新的 Base64 字符串。
    • @Subby:如果你将它存储在MemoryStream 中,你也可以将它写入磁盘。
    • 嗯,您的方法会保存实际图像而不是包含 Base64 字符串的文件吗?为了确保我们在同一个地方,我设法将图像保存到质量降低的文件系统中。我现在想要实现的是获取新减少的图像的 Base64 字符串并返回它。
    猜你喜欢
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多