我正在降低图像的质量并将其保存到文件系统中。我希望以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;
答案 0 :(得分: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);
}
应该将其直接写入文件 as base64。