Asp.net 图像大小调整质量

2024-03-18

我有这段代码,用于调整和保存用户发布的文件的大小。 问题是,当我调整到 480px 宽度时,图像质量会下降很多,而且大小(以 kb 为单位)仍然很大。

例如,当我使用 Paint 之类的软件“手动”将同一图像的大小调整为 480px 时,质量仍然与原始图像一样好(从我的眼睛可以看出),并且以 kb 为单位的大小比使用调整大小要小得多这GetThumbNailImage method.

姆登 说“如果您从嵌入缩略图的图像中请求大缩略图(例如 300 x 300),则缩略图的质量可能会明显下降。缩放主图像可能会更好(而不是缩放嵌入的缩略图)通过调用DrawImage方法。”,但这似乎适用于 Windows 表单,我需要一个网络应用程序。

那么我应该使用什么代码来执行此操作?

System.IO.Stream st = FileUploadPost.PostedFile.InputStream;

myImage = System.Drawing.Image.FromStream(st);
thumb = myImage.GetThumbnailImage(newWidth, newHeight, null, System.IntPtr.Zero);

thumb.Save(myPath);

这是对我有用的代码。您可以设置新的位图分辨率:

using System.Drawing;

Bitmap img = (Bitmap)Bitmap.FromStream(FileUploadPost.PostedFile.InputStream);
Bitmap newImg = new Bitmap(maxWidth, maxHeight, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
newImg.SetResolution(72, 72);
Graphics newGraphic = Graphics.FromImage(newImg);
newGraphic.Clear(Color.Transparent);
newGraphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
newGraphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
newGraphic.DrawImage(img, 0, 0, maxWidth, maxHeight);
System.Drawing.Imaging.ImageFormat format = default(System.Drawing.Imaging.ImageFormat);
string ext = Path.GetExtension(FileUploadPost.PostedFile.FileName);
switch (ext.ToLower())
{
    case ".gif":
        format = System.Drawing.Imaging.ImageFormat.Gif;
        break;
    case ".png":
        format = System.Drawing.Imaging.ImageFormat.Png;
        break;
    default:
        format = System.Drawing.Imaging.ImageFormat.Jpeg;
        break;
}
newImg.Save(myPath, format);

您可以将其包装在全局类的 void 函数中:

public static void UploadImage(HttpPostedFileBase file, int maxWidth, int maxHeight)
{
  //paste all the above code in here and replace FileUploadPost.PostedFile with file
}

然后您可以从项目中的任何位置调用它:

ClassName.UploadImage(FileUploadPost.PostedFile, 300, 300);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Asp.net 图像大小调整质量 的相关文章

随机推荐

  • 如何为 CMake 构建过程本身添加 add_custom_command() ?

    有什么方法可以执行与 add custom command 等效的操作 当某个文件更改时运行外部脚本 但对于应该在 CMake 脚本执行本身期间运行的内容 即 用于依赖图生成 我们将源代码文件分为多个子库 并且有一些配置文件列出了哪个源文件
  • 如何通过 Plotly 从 Dash 中的回调函数访问 cookie?

    我有一个简单的 Dash 回调函数 如下所示 app callback dash dependencies Output test output children dash dependencies Input test input val
  • WPF MVVM 代码背后的最佳实践

    我是一名使用 MVVM 模式通过 WPF 学习 C 的学生 最近 我一直在研究我的应用程序的艺术 自定义启动屏幕 当我不希望它关闭时 它不应该关闭 我一直在网上搜索一种无需后台代码即可完成此操作的好方法 不幸的是 几天后我仍然没有找到令人满
  • java继承问题-必须在父类中创建空构造函数

    我在 netbeans ubuntu java 标准项目上编程 测试准备 当我创建 AccountStudent java 时出现错误 账户 java public abstract class Account protected doub
  • 使用 JNA 访问包含多个类的 DLL 方法

    我是使用 JNA 从 Java 访问 DLL 的新手 所以如果这对每个人来说都是显而易见的 请原谅我 我需要从 DLL 用 VB 编写 中的类访问方法 并且不能通过仅加载库来完成此操作 因为我看到如何访问其中的类 即该 DLL 名为 CDr
  • Jetpack Compose 不采用 colorScheme

    我有一个用 Jetpack Compose 编写的 Android 应用程序 我正在尝试使用应用程序中定义的 colorScheme 设置图标颜色 但它不起作用 下面是我的代码 Color kt import androidx compos
  • 如何从 Firebase getDocument 函数 (Swift) 中写入变量

    我想读取一个文档 从该文档中获取一个字段 并将一个变量设置为该字段的值 我希望写入在 Firebase getDocument 函数外部声明的变量 实际结果是该变量正在 Firebase getDocument 函数内写入 但在函数外部它为
  • Rails - Active Record:添加额外的选择列来查找(:全部)

    我想添加新列sum time entries hours 到sql选择 我正在查询这样的条目 issues Issue visible where options conditions all include gt status proje
  • Python Flask WTForm SelectField 在验证时具有枚举值“不是有效选择”

    我的 Python Flask 应用程序使用带有内置 python 枚举支持的 WTForms 我正在尝试提交一个表单 POST 其中 SelectField 由枚举的所有值填充 当我点击 提交 时 我收到错误 不是有效的选择 这看起来很奇
  • android.support.design.widget.TextInputLayout 无法实例化

    我想整合android support design widget TextInputLayout在我的安卓应用程序中 我已经复制了jar文件android support design jar从 sdk 到我的应用程序 lib 文件夹 我
  • 将 UserControl 绑定到其自己的 dependencyProperty 不起作用

    我遇到一个问题 当父级将该对象设置为数据绑定时 我无法创建使用自定义对象的属性的用户控件 尝试解释一下我在这里的意思是代码 自定义对象 public class MyObj public string Text get set public
  • 向 Django 管理添加自定义字段

    我已经用各个领域定义了我的模型 其中一些是自定义字段 我使用应用程序的 fields py 文件来验证信用卡数据 来源是here https github com bryanchow django creditcard fields cla
  • Unicorn 与 Ruby 2.4.1 导致奇怪的崩溃

    我正在从 Ruby 2 3 1 升级到 Ruby 2 4 1 这样做后 Unicorn 似乎与新版本不兼容 我收到以下错误 我正在使用 Unicorn 5 1 0 并尝试了 Unicorn 5 3 1 无济于事 我需要使用不同的库而不是 X
  • 树形视图验证

    树视图有叶节点复选框 我需要验证树视图 如果至少检查了一个节点 并且用户可以选择的节点数量不超过特定 例如 3 个节点 注意 Treeview是asp net树视图 不是ajax树视图 好吧 既然你没有提到你想要什么类型的验证 我将同时进行
  • Google 驱动器 - WSL2 中的虚拟驱动器安装

    有谁知道我是否可以在win10系统中的wsl2中安装Google驱动器 虚拟驱动器 谢谢 sudo mount t drvfs G mnt g 第一次这样做时 运行sudo mkdir mnt g first
  • 等待 QueueUserWorkItem 完成

    如果我将作业添加到线程池中QueueUserWorkItem 在所有工作完成之前 如何阻止我的计划继续进行 我知道我可以添加一些逻辑来阻止应用程序运行 直到所有作业完成 但我想知道是否有类似的东西Thread Join 或者是否有任何方法可
  • .NET Core 中的程序集绑定重定向

    如何在 NET Core 中进行程序集绑定重定向 我发现这个问题被问了几次 但没有提供解决方案 情况微不足道 我有一个引用版本 10 中的程序集 A 的包 我想使用版本 12 中的程序集 A 在标准 NET 中 它可以完美地与此配合使用
  • 在运行时隐藏水晶报表中的列?

    如何在运行时隐藏水晶报表中的列 感谢您的任何建议 选项 1 使用条件抑制逻辑隐藏 显示冗余字段 使用参数字段来驱动所需字段的抑制公式 如果您想消除字段之间的空格 则需要将字段堆叠在一起并适当地抑制它们 在您的示例中 第 2 列将包含 fie
  • 通过 CSS 根据高度设置元素宽度

    我有一组元素 要求它们的最小宽度等于它们的高度 但高度没有明确设置 目前我可以通过设置 css 来实现这一点min width通过 jQuery 属性 document ready function myClass each functio
  • Asp.net 图像大小调整质量

    我有这段代码 用于调整和保存用户发布的文件的大小 问题是 当我调整到 480px 宽度时 图像质量会下降很多 而且大小 以 kb 为单位 仍然很大 例如 当我使用 Paint 之类的软件 手动 将同一图像的大小调整为 480px 时 质量仍