httppostdfilebase调整图像大小

本文关键字:图像 调整 httppostdfilebase | 更新日期: 2023-09-27 17:50:14

我有以下一行代码,它将我的HttpPostedFileBase转换为图像。

我已经打乱了编码器参数,试图调整图像的大小,但似乎不能这样做。

将图像大小调整为250x250的最佳方法是什么?

我也希望它把图像的中间作为25x250的矩形,而不是随机的地方。

转换和保存图像的最有效的方法是什么,因为它将进入数据库?

请注意,model.Image的类型是HttpPostedFileBase

var image = Image.FromStream(model.Image.InputStream, true, true);
ImageCodecInfo jpgInfo = ImageCodecInfo.GetImageEncoders()
    .Where(codecInfo => codecInfo.MimeType == "image/jpeg").First();
using (EncoderParameters encParams = new EncoderParameters(1))
{
    encParams.Param[0] = new EncoderParameter(Encoder.Quality, (long)50);
    //quality should be in the range [0..100]
    using (var ms = new MemoryStream())
    {
        // Convert Image to byte[]
        image.Save(ms, ImageFormat.Jpeg);
        byte[] imageBytes = ms.ToArray();
        // Convert byte[] to Base64 String
        string base64String = Convert.ToBase64String(imageBytes);
        image64 = base64String;
    }
}

httppostdfilebase调整图像大小

最好的方法是使用已建立的库,如ImageResizer;这样,你就避免了重复发明轮子。如果您关心空间效率(文件大小),请使用最大压缩的JPEG格式。请注意,使用JPEG的有损编码将大大降低图像质量。如果您想使用无损编码,请尝试PNG。根据我的经验,在。net中压缩PNG图像是相当困难的。我徒劳地搜索了一段时间,寻找一个能做到这一点的库,我找到的都是厚客户端Windows应用程序。