【问题标题】:How to resize an image's byte[] while keeping proportions?如何在保持比例的同时调整图像的 byte[] 大小?
【发布时间】:2013-08-17 23:24:20
【问题描述】:

在我的 ASP.Net MVC 4 应用程序中,我有一个视图,允许用户将鼠标悬停在图像上以获得全尺寸预览。效果很好。

目前,我将用户悬停的图像设置为 50 和 50 的静态宽度和高度,如下所示:

<img id="@Model.Value" class="image-preview" height="50" width="50" src="@Model.ImageString" />

@Model.ImageString 是由此操作创建的值:

[HttpGet]
public string GetImageUrl(Guid fileId)
{
    var file = db.FetchedFiles
        .First(ff => ff.ID == fileId);

    return "data:image/*;base64," + Convert.ToBase64String(file.Data);
}

上面的动作是我想修改的。如何将Convert.ToBase64String(file.Data) 输出为与原始文件比例相同的缩略图?

提前致谢!

【问题讨论】:

    标签: c# arrays image asp.net-mvc-4 thumbnails


    【解决方案1】:

    我在网上找到了一个例子,但我不记得具体在哪里。我猜这是一个常见的解决方案。

    这是我的选择:

    internal static string resizeImage(byte[] data){
        using (var ms = new MemoryStream(data))
        {
            var image = Image.FromStream(ms);
    
            var ratioX = (double)150 / image.Width;
            var ratioY = (double)50 / image.Height;
            var ratio = Math.Min(ratioX, ratioY);
    
            var width = (int)(image.Width * ratio);
            var height = (int)(image.Height * ratio);
    
            var newImage = new Bitmap(width, height);
            Graphics.FromImage(newImage).DrawImage(image, 0, 0, width, height);
            Bitmap bmp = new Bitmap(newImage);
    
            ImageConverter converter = new ImageConverter();
    
            data = (byte[])converter.ConvertTo(bmp, typeof(byte[]));
    
            return "data:image/*;base64," + Convert.ToBase64String(data);
        }
    }
    

    【讨论】:

    • ImageConverter从何而来?我找不到它 System.Drawing
    【解决方案2】:

    您需要返回已在服务器上调整大小的新图像。

    到目前为止,最简单的方法是使用ImageResizing 并简单地将文件流与ResizeSettings 一起传递以指定所需的尺寸。然后只需将调整大小的文件返回为base64

    该库非常广泛,并且包含大量示例,因此您应该能够找到解决方案或对其进行调整以满足您的需求。

    这里是一个例子:http://imageresizing.net/docs/howto/upload-and-resize

    【讨论】:

      猜你喜欢
      • 2021-06-12
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多