C# - 调整图像画布大小(保持源图像的原始像素尺寸)

2024-03-29

我的目标是获取图像文件并将尺寸增加到 2 的下一个幂,同时保留像素原样(也称为不缩放源图像)。因此基本上最终结果将是原始图像,加上跨越图像右侧和底部的额外空白,因此总尺寸是 2 的幂。

下面是我现在正在使用的代码;它创建了具有正确尺寸的图像,但由于某种原因,源数据被稍微缩放和裁剪。

// Load the image and determine new dimensions
System.Drawing.Image img = System.Drawing.Image.FromFile(srcFilePath);
Size szDimensions = new Size(GetNextPwr2(img.Width), GetNextPwr2(img.Height));

// Create blank canvas
Bitmap resizedImg = new Bitmap(szDimensions.Width, szDimensions.Height);
Graphics gfx = Graphics.FromImage(resizedImg);

// Paste source image on blank canvas, then save it as .png
gfx.DrawImageUnscaled(img, 0, 0);
resizedImg.Save(newFilePath, System.Drawing.Imaging.ImageFormat.Png);

似乎源图像是根据新的画布大小差异进行缩放的,即使我使用的是名为 DrawImageUnscaled() 的函数。请告诉我我做错了什么。


方法DrawImageUnscaled不会以原始像素大小绘制图像,而是使用源图像和目标图像的分辨率(每英寸像素数)来缩放图像,以便以相同的物理尺寸绘制图像。

Use the DrawImage方法改为使用原始像素大小绘制图像:

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

C# - 调整图像画布大小(保持源图像的原始像素尺寸) 的相关文章

  • 如何在 C# 中将 IEnumerable 转换为 Enum?

    我已将多个字符串解析为枚举标志 但看不到将它们合并为单个枚举位字段的巧妙方法 我使用的方法循环遍历字符串值 然后 将值转换为 Enum 对象 如下所示 Flags public enum MyEnum None 0 First 1 Seco
  • 将 Azure Blob 与 Azure 网站连接

    我正在尝试将 Azure 网站连接到 Azure blob 我打算在容器中托管一些文件 然后从我的网站获取它们 我从本教程开始 http azure microsoft com en us documentation articles we
  • 使用 OpenFileDialog 选择文件和文件夹

    我做了很多研究来找到这个问题的合适答案 但我失败了 我可以在这里和其他论坛上看到多个问题 但没有明确的答案带来明确的解决方案 我希望 OpenFileDialog 为我选择一个 多个文件 并允许我也选择文件夹 例如 A 多个文件或多个文件夹
  • 如何通过特定的行分隔符读取文本文件?

    使用流读取器读取文本文件 using StreamReader sr new StreamReader FileName Encoding Default string line sr ReadLine 我想强制行分隔符应该是 n not
  • 对“组件”类型的引用声明它是在“系统”中定义的

    尝试在 UWP 应用程序中获取一些 WMI 对象 在 net 4 6 上运行 VS2015 我收到 ForEach 和方法调用错误 指出 引用类型 组件 声明它是在 系统 中定义的 错误为 CS7069 using System using
  • 如何将 Boost 库添加到 XCode 6.0 中的 C++ 程序?

    我在用着XCode6 0并且需 要boost程序库 我已经下载了boost 1 57 0 tar gz from http sourceforge net projects boost files boost 1 57 0 http sou
  • 在 C# 中读取并发送 mp4 文件

    我使用以下代码从服务器读取 mp4 文件并通过 http 发送它 我的服务器端是 mvc4 控制器 有趣的是 视频在 Chrome 中渲染得很好 但在 ios 设备上没有得到任何东西 所以我认为这可能是响应流标头问题 我缺少什么吗 var
  • C++变量声明和初始化规则

    考虑以下声明和初始化类型变量的方法C C c1 C c2 c2 C C c3 C C c4 C 所有这些是否完全等同 或者其中一些可以根据确切的定义而有所不同C 假设它有公共默认值和复制构造函数 这些意味着 C c1 default con
  • 是否需要显式事务回滚?

    许多例子都主张显式回滚数据库事务 大致如下 using var transaction try do some reading and or writing here transaction Commit catch SqlExceptio
  • 如何分配二维数组? [复制]

    这个问题在这里已经有答案了 我需要创建一个二维数组 目前我将其创建为int a 100 100 但我需要使用动态分配内存malloc在C语言中 我用了代码 include
  • 为什么 ReadKey 在从 Git Bash 运行 .net-core 控制台应用程序时会抛出异常?

    这是代码 ConsoleKeyInfo cki while cki Console ReadKey true Key ConsoleKey Escape Console WriteLine cki Key 当我使用 dotnet run 从
  • 使用变体泛型委托类型对运算符 == 进行重载解析

    重载解析的精确规则是什么 两个委托类型表达式之间 考虑以下代码 其中using System 是需要的 static class ProgramA static void TargetMethod object obj static voi
  • 如何使 YY_INPUT 指向字符串而不是 Lex & Yacc (Solaris) 中的标准输入

    我想要我的yylex 解析字符串而不是文件或标准输入 如何使用 Solaris 提供的 Lex 和 Yacc 来做到这一点 重新定义YY INPUT 这是一个工作示例 使用命令编译并运行 yacc d parser y lex lexer
  • Python 比 C++ 更快、更轻吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 当我已经定义了变量时,为什么会收到一条错误消息,指示变量不存在?

    我收到一条错误消息 表明MyRandomArray在当前上下文中不存在 如何在 C WinForms 应用程序中跨类访问变量 public void Quiz Load object sender EventArgs e string My
  • 什么是排列索引?

    我正在阅读 加速 C 我不明白练习 5 1 设计并实现一个程序 根据以下输入生成排列索引 排列索引是其中每个短语由短语中的每个单词索引的索引 The quick brown fox jumped over the fence The qui
  • 命令绑定到 ViewModel,并在 View 中使用确认逻辑

    寻找最优雅的解决方案将按钮命令绑定到 ViewModel ICommand 属性 同时允许在视图中进行确认 我想做的事 仅允许用户在应该时单击按钮 单击按钮时 要求确认 如果确认 则在 ViewModel 中进行工作 否则取消 不要破坏MV
  • 让 clang-tidy 修复头文件

    我正在将当前使用 gcc 编译的项目移至 clang 并有一堆 gcc 没有生成的警告 Winconsistent missing override clang tidy致力于修复这些错误 cpp文件 但是它不触及hpp文件 因为在数据库中
  • 如何在 C++ 中检查文件是否已被另一个应用程序打开?

    我知道 有is open C 中的函数 但我希望一个程序检查文件是否尚未被另一个应用程序打开 有没有办法使用标准库来做到这一点 编辑 在答案中澄清这是针对 Linux 应用程序的 不仅标准库没有这个功能 一般来说也是不可能的 你可以 在li
  • 如何在pdf中导出一对一的JTable[重复]

    这个问题在这里已经有答案了 可能的重复 为什么 JTable 标题没有出现在图像中 https stackoverflow com questions 7369814 why does the jtable header not appea

随机推荐

  • 如何使用 GStreamer 和 XOverlay 在 GTK+ 应用程序窗口中嵌入视频?

    我正在尝试使用 GTK 和 GStreamer 编写一个小型媒体播放器 目前使用 XOverlay 接口将视频嵌入到 GtkDrawing 区域中INSIDE主窗口 该程序是使用以下命令编译的 g home phongcao cacao c
  • `rand()` 的用处 - 或者谁应该调用 `srand()`?

    背景 我用的是rand std rand std random shuffle 以及我的代码中用于科学计算的其他函数 为了能够重现我的结果 我总是明确指定随机种子 并通过srand 直到最近我才发现 libxml2 也会调用srand 懒洋
  • Chrome 扩展程序将消息从 iFrame 发送到事件页面,然后发送到内容脚本

    我已经从内容脚本插入了一个 iframe 效果很好 但是如果我想在 iframe 上显示父级的 html 内容 我必须使用消息传递在 iframe 和内容脚本之间进行通信 但它不起作用 然后我尝试将消息从 iframe 发送到 事件页面 然
  • OSX 上的 mongodb:如何更新 brew 服务以通过身份验证启动?

    我用自制软件安装了 mongodb 我添加了一个 admin 并更新了 usr local etc mongod conf 以启用安全授权 我可以使用 auth 启动 mongod mongod auth port 27017 dbpath
  • 按日期连接两个 data.table,表 1 中最接近的日期严格小于第二个表中的日期

    从 SO 上其他地方窃取一个虚拟示例 按确切日期加入 data table 如果不是 则按最近的小于日期加入 data table https stackoverflow com questions 11341557 join data t
  • Graphviz中如何使边重叠?

    我想在 graphviz 中使边缘重叠 但 graphviz 似乎重新排列了叶节点以避免重叠 我可以强制 graphviz 停止重新排列节点吗 制作 Desired 我正在使用 pygraphviz 创建树 使用以下方法额外的隐形边缘非常适
  • 使用 SelectionModel 或 ListDataProvider 选择 CellList 中的元素

    我使用 CellList 列出数据 使用 ListDataProvider 管理数据 使用 SelectionModel 从 CellList 中选择元素并相应地生成事件 现在 当我使用 cellList getList set index
  • 使用Azure B2C登录时如何在自定义页面中嵌入登录控件

    我正在使用 Azure AD B2C 示例 出于测试目的 我使用稍作修改的单页应用程序sample https github com Azure Samples active directory b2c javascript msal si
  • 如何防止创建空对象

    我正在尝试将每个列表都位于嵌套对象内部的网络服务模型映射到更简单的东西 Model 1 public class Parent private Children children public class Children private
  • 如何在Python中从邻接矩阵创建边列表数据框?

    我有一个 pandas 数据框 将其视为网络中节点的加权邻接矩阵 的形式 df A B C D A 0 0 5 0 5 0 B 1 0 0 0 C 0 8 0 0 0 2 D 0 0 1 0 我想获得一个代表边缘列表的数据框 对于上面的例子
  • PHPstorm项目导航

    如何在PHPstorm项目列表中选择打开的文件 我的意思是 PHPstorm 有一个 在项目中选择 Netbeans 功能的模拟 Navigate View在旧版本中 Select In Project View 也可以启用Autoscro
  • NuGet 将 DLL 文件放在哪里?

    我正在尝试解决 NuGet 的问题源代码控制限制 https stackoverflow com questions 7015149 multiperson team using nuget and source control 为此 我需
  • 使用关联数组作为 D3 的数据

    我有一个非常简单的 D3 示例 它首先将数据读入关联数组 然后将其显示在条形图中 不过 我似乎无法使用此方法显示任何内容 相反 我必须在两者之间插入一个任务 将数据读取到关联数组中 将该数据复制到一个简单数组中 然后使用该简单数组显示条形图
  • 获取可用(语言)resx 文件的列表

    许多程序都有社区 在应用程序发布后向其添加语言 因此 在程序的设置窗口中 人们可以看到可用语言的下拉列表 那么 人们在使用 resx 文件进行本地化时如何编码呢 我在网上搜索了一遍又一遍 但找不到任何答案 一切都运行良好 但现在 我需要制作
  • 如何在 pom.xml 文件中指定 Java 编译器版本?

    我在 Netbeans 中编写了一些 Maven 代码 大约有 2000 多行 当我在 Netbeans 上编译它时 一切都很好 但如果我想在命令行上运行它 我会收到以下错误 generics are not supported in so
  • JavaScript 风格的警报系统

    我在用smoke js http ssssnakes com smoke 它允许设置经典警报 javascript 窗口的样式 您所要做的就是放置 smoke在警报之前 即 smoke confirm 我遇到的问题是确定 取消回调 它对我不
  • 创建“拼写检查”,以合理的运行时间检查数据库

    我不是在询问如何实现拼写检查算法本身 我有一个包含数十万条记录的数据库 我想要做的是针对所有这些记录的表中的特定列检查用户输入 并返回具有特定汉明距离的任何匹配项 同样 这个问题不是关于确定汉明距离等 当然 目的是创建一个 您的意思是 功能
  • pyspark 中的交叉验证

    我使用交叉验证来训练线性回归模型 使用以下代码 from pyspark ml evaluation import RegressionEvaluator lr LinearRegression maxIter maxIteration m
  • HMC SHA1 哈希 - Java 生成与 C# 不同的哈希输出

    这是后续this https stackoverflow com questions 7175067 hmc sha1 hash c sharp producing different hash output than ruby问题 但我正
  • C# - 调整图像画布大小(保持源图像的原始像素尺寸)

    我的目标是获取图像文件并将尺寸增加到 2 的下一个幂 同时保留像素原样 也称为不缩放源图像 因此基本上最终结果将是原始图像 加上跨越图像右侧和底部的额外空白 因此总尺寸是 2 的幂 下面是我现在正在使用的代码 它创建了具有正确尺寸的图像 但