0

我正在降低图像的质量并将其保存到文件系统中。我希望以 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;
4

1 回答 1

1

与其将其保存到文件中,不如将其保存到MemoryStream. 然后你可以使用:

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

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

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

或者,您可以ToBase64Transform使用CryptoStream

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

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

于 2013-09-17T13:49:11.477 回答