C#代码修改图片分辨率大小

c#视觉应用开发中如何在C#中进行图像分辨率变换? 通过上述示例代码,你可以在C#中进行图像分辨率的变换,并且处理不同的需求,例如保持宽高比和处理透明背景。使用命名空间中的类,可以方便地加载、缩放和保存图像。选择合适的插值模式和图像格式,可以进一步提高图像质量和应用的灵活性。继续讨论图像处理中的其他一些高级主题和代码示例,例如批量处理图像和多线程处理。通过上述示例代码,你可以在C#中实现批量图像处理和多线程图像处理,从而提高图像处理的效率。使用可以有效地利用多核CPU的性能,加快处理速度。 阅读详情

本人在此之前,曾看过一些博客或者其他网上的文章,同时我也参考和借鉴、以及使用某个博主的代码进行修改过,在此忘了那个博主的博客地址了,有什么不合理之处请见谅!

本方法是传入一个图片的图片流(本人使用的是MemoryStream ),最后返回的也是MemoryStream 对象,代码如下:

        public static MemoryStream AdjustPhoto(int toWidth, int toHeight, MemoryStream stream, int maxWidth, int maxHeight)
        {
            Image originalImage = Image.FromStream(stream);

            //根据图片大小获取新图片从原图片截取的区域
            int x, y, w, h;
            if (toHeight > 0)
            {
                if (toWidth > 0)
                {
                    if (originalImage.Width > toWidth && originalImage.Height > toHeight)
                    {
                        w = toWidth;
                        h = toWidth * originalImage.Height / originalImage.Width;

                        if (h > toHeight)
                        {
                            h = toHeight;
                            w = toHeight * originalImage.Width / originalImage.Height;
                            x = (toWidth - w) / 2;
                            y = 0;
                        }
                        else
                        {
                            x = 0;
                            y = (toHeight - h) / 2;
                        }
                    }
                    else if (originalImage.Width > toWidth)
                    {
                        w = toWidth;
                        h = toWidth * originalImage.Height / originalImage.Width;
                        x = 0;
                        y = (toHeight - h) / 2;
                    }
                    else if (originalImage.Height > toHeight)
                    {
                        h = toHeight;
                        w = toHeight * originalImage.Width / originalImage.Height;
                        x = (toWidth - w) / 2;
                        y = 0;
                    }
                    else
                    {
                        w = originalImage.Width;
                        h = originalImage.Height;
                        x = (toWidth - w) / 2;
                        y = (toHeight - h) / 2;
                    }
                }
                else
                {
                    if (originalImage.Height > maxHeight)
                    {
                        toWidth = toHeight * originalImage.Width / originalImage.Height;
                        x = 0;
                        y = 0;
                        w = toWidth;
                        h = toHeight;

                    }
                    else
                    {
                        x = 0;
                        y = 0;
                        w = originalImage.Width;
                        h = originalImage.Height;
                        toWidth = originalImage.Width;
                        toHeight = originalImage.Height;
                    }
                }
            }
            else
            {
                if (originalImage.Width > maxWidth)
                {
                    toHeight = toWidth * originalImage.Height / originalImage.Width;
                    x = 0;
                    y = 0;
                    w = toWidth;
                    h = toHeight;

                }
                else
                {
                    x = 0;
                    y = 0;
                    w = originalImage.Width;
                    h = originalImage.Height;
                    toWidth = originalImage.Width;
                    toHeight = originalImage.Height;
                }
            }
            Bitmap bm = new Bitmap(toWidth, toHeight);
            Graphics g = Graphics.FromImage(bm);

            g.SmoothingMode = SmoothingMode.HighQuality;
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;

            g.Clear(Color.White);
            g.DrawImage(originalImage, new Rectangle(x, y, w, h), 0, 0, originalImage.Width, originalImage.Height, GraphicsUnit.Pixel);

            long[] quality = new long[1];
            quality[0] = 80;

            EncoderParameters encoderParams = new EncoderParameters();
            EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
            encoderParams.Param[0] = encoderParam;
            ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();//获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象。
            ImageCodecInfo jpegICI = null;
            for (int i = 0; i < arrayICI.Length; i++)
            {
                if (arrayICI[i].FormatDescription.Equals("JPEG"))
                {
                    jpegICI = arrayICI[i];//设置JPEG编码
                    break;
                }
            }
            MemoryStream ms = new MemoryStream();
            if (jpegICI != null)
            {
                bm.Save(ms, jpegICI, encoderParams);
            }

            bm.Dispose();
            originalImage.Dispose();
            g.Dispose();
            return ms;
        }

在这代码中,其中需要创建一个画板,并设置相关参数:

            Bitmap bm = new Bitmap(toWidth, toHeight);
            Graphics g = Graphics.FromImage(bm);

            g.SmoothingMode = SmoothingMode.HighQuality;
            g.InterpolationMode = InterpolationMode.HighQualityBicubic;

接着,就将原始图片画进画板中:

            g.DrawImage(originalImage, new Rectangle(x, y, w, h), 0, 0, originalImage.Width, originalImage.Height, GraphicsUnit.Pixel);

最后,   获取图形编码器的信息,将图片保存为jpg格式的内存流(MemoryStream):

            EncoderParameters encoderParams = new EncoderParameters();
            EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
            encoderParams.Param[0] = encoderParam;
            ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();//获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象。
            ImageCodecInfo jpegICI = null;
            for (int i = 0; i < arrayICI.Length; i++)
            {
                if (arrayICI[i].FormatDescription.Equals("JPEG"))
                {
                    jpegICI = arrayICI[i];//设置JPEG编码
                    break;
                }
            }
            MemoryStream ms = new MemoryStream();
            if (jpegICI != null)
            {
                bm.Save(ms, jpegICI, encoderParams);
            }



C#改变图片分辨率 C#改变图片分辨率,并且保存报本地文件中 立即下载

相关推荐

C# 设置分辨率 修改分辨率

这是一个设置屏幕分辨率的程序,用C#2005开发,可以任意设置屏幕分辨率。

c# 调整图片分辨率

描述:项目上有个需求是每隔一段事件从redis拿图片(图片格式为base64) 拿到之后将图片发送给led屏,这里尝试了下,图片拿取没啥问题,发送给led屏也没问题,但就是tu

墨水直达的博客 4514

Unity3D Lua与C#的相互调用与性能剖析详解

在游戏开发中,经常会遇到Lua与C#之间的相互调用的情况。本文将详细介绍Unity3D中Lua与C#的相互调用的方式,并对其性能进行剖析。对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!一、Lua与C#的相互调用方式Lua调用C#在Unity3D中,可以通过Lua调用C#的方式来实现Lua与C#的相互调用。具体步骤如下:(1)首先需要在Unity3D项目中导入Lua的相关库,例如tolua或者xlua。

weixin_49669470的博客 1215

C# 修改图片文件分辨率大小

将文件夹及子文件夹下的所有.jpg格式的图片宽度调整成统一大小,并包存到指定文件夹内。 public static void ResizeImg(string srcFold, string desFold, int maxSize) { var ret = Directory.GetFiles(srcFold, "*.jpg");

David 1万+

[官方培训]19-物理模拟 Epic 肖月 笔记

物理引擎全局解算精度的设置,帧率越高,子步越多得到的模拟结果就越精确。引擎默认情况下是以变化的帧率运行的,但是对于Chaos物理引擎来说。一般子步越小,帧率越固定,效果就会更好更稳定一些。图示的分步选项就是依据下方的最长子步时长和最大步数对动态变化的帧率,进一步的做拆分来保证物理效果。对于影视项目建议都开启分步选项。红色框内有三个迭代次数的设置,这是Chaos基于位置的约束求解算法专用的一个设置,可以简单理解为迭代次数越高,当前帧一个子步内得到的结果就越精确。

Tcohneyn的博客 1546

单细胞测序数据整合

基于Seurat 联合harmony进行单细胞数据整合分析

G2530051386的博客 9793

c# 调整压缩照片的分辨率

c# 调整压缩照片的分辨率

weixin_43931979的博客 1229

手把手教你学Simulink--单相逆变器模糊逻辑控制策略仿真

本文介绍了在Simulink中设计单相逆变器模糊逻辑控制策略的完整流程。主要包括:1)构建单相逆变器模型;2)使用FuzzyLogicToolbox设计模糊控制器,定义输入输出变量和模糊规则;3)将控制器集成到Simulink模型;4)添加干扰源和示波器;5)配置仿真参数并分析结果。该方法利用模糊控制处理非线性系统的优势,可实现输出电压的精确跟踪,具有良好的鲁棒性。文中提供了详细的步骤说明和示例代码,强调准确设计隶属函数和规则库对控制性能的关键作用。该仿真设计为电力电子控制系统的开发提供了有效支持。

MHD0815的博客 202

asp.net修改图片的大小

/// <summary>/// 修改指定图片的分辨率/// </summary>/// <param name="fileFoldUrl">文件夹url</param>/// <param name="fileName">文件名</param>/// <param name="filePath">文件路径,带文件...

weixin_30614587的博客 451

AI测试:手把手教你用AI做桌面自动化「喂饭教程」

本文介绍了基于MCP协议的DesktopCommanderMCP自动化工具,通过自然语言指令实现桌面操作。系统采用客户端-服务器架构,支持应用程序管理、文件操作、屏幕控制等功能。详细说明了环境搭建步骤,包括Python和Node.js依赖安装、API密钥配置及MCP服务部署。通过实战案例展示了文件整理、批量截图等典型应用场景,并分享了任务描述优化、权限控制等最佳实践。该方案能显著提升重复性桌面操作的效率,让AI成为智能办公助手。

blues_C的博客 852

RK3588开发笔记-Buildroot编译host-nodejs报错解决ModuleNotFoundError: No module named ‘_bz2‘

在RK3588的开发过程中,使用Buildroot进行系统的构建和编译是一个常见的选择。然而,在编译host-nodejs的过程中,有时会遇到报错信息提示。这个错误通常是由于Python环境中缺少相应的模块导致的。以下将记录我解决这个问题的过程。。在RK3588的开发过程中,使用Buildroot编译host-nodejs时遇到的错误,通常是由于缺少相应的Python模块导致的。通过配置buildroot pythong bzip2开发库并重新编译,可以解决这个问题。

flypig has a dream! 901

c# 压缩图片加修改分辨率

最近的一个项目需求是在不改变图片像素和分辨率的前提下降低图片大小 wtf 内心是崩溃的,降低图片大小可以 还要求不改变分辨率 好在 有师傅的指导 还是完成了需求 说下步骤 1.使用opencv降低图片大小 此时 只有图片的分辨率没有改变 ,大小和分辨率均被缩小 2.修改图片的分辨率 Mat mat = Cv2.Imread("in.jpg",ImreadModes.Color); Cv2.ImWr...

qq_42752712的博客 2284

AI 模型优化与部署秘籍:从理论到实战

本文系统介绍了AI模型优化与部署的关键技术。模型剪枝通过去除冗余参数减小模型规模,量化技术降低计算精度以提升效率,蒸馏方法实现知识从大模型到小模型的迁移。TensorRT通过层融合和精度校准加速GPU推理,ONNX格式实现跨框架模型转换,TFLite则优化移动端部署。这些技术共同解决了AI模型在资源受限环境下的部署难题,显著提升了模型运行效率,为AI应用落地提供了重要支撑。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 247

C#修改图片尺寸,不改变原有图片比例

C#使用BitMap修改图片尺寸,修改图片大小,不改变原有图片比例

weixin_50335725的博客 4542

一张图看懂 ABAP CDS 两大子语言:CDS DDL 与 CDS DCL 以及缺席的 DML

ABAP CDS 的核心设计思想围绕语义数据模型(DDL)与数据访问控制(DCL)展开,而非单纯作为SQL查询工具。其DDL通过声明式语法定义业务导向的数据视图,强调模型稳定性与复用性;DCL则将访问控制逻辑下沉到模型层,实现行级权限过滤。ABAP CDS刻意剥离DML功能,交由ABAP SQL处理数据变更,形成清晰的分层架构。这种设计使数据定义、访问控制与应用逻辑解耦,为现代ABAP应用提供更安全、可维护的数据治理方案。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 976

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

unity改变图片像素大小_Unity使用C#修改图片分辨率

public static Texture2D ReSetTextureSize(Texture2D tex, int width, int height){var rendTex = new RenderTexture(width, height, 24, RenderTextureFormat.ARGB32);rendTex.Create();Graphics.SetRenderTarget(...

weixin_39534321的博客 2269

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

WPF 设置图片的分辨率DPI

WPF 修改图片的分辨率/DPI 在WPF中,当使用到PNG之类的图片作为背景时。我发现一个问题:图片属性(Windows)的宽、高相同的两张图片在WPF界面上显示却大小不一。如下图所示。 在后台应用程序调试时发现,两个图片的DPI不一致。 2.png 3.png 百度了下,网友提供了三种解决方法: 创建 BitmapImage 对象,根据当前屏幕的 DPI 值计算 DecodePixe...

YouyoMei的博客 3427

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

c#设置图片的dpi_C#:设计DPI的高分辨率下的显示问题

一、背景在PC机上显示正常,在高分辨率下的Pad上,显示出现问题:1、显示在屏幕最右端的窗体(控件)显示不出来;2、截图时,被截图的界面字体文字变大,界面因此显示不全。二、解决方法:方法一:WPF上使用WPF方式获取屏幕大小,而不是Winform的获取屏幕大小的方式。//Size primarySize = Screen.PrimaryScreen.Bounds.Size;double dWidt...

weixin_40003512的博客 981

【转】图片分辨率无损转换

转自:http://zhidao.baidu.com/link?url=Rc1S974ka35Sgc9aeEhbNlUP7BqWkqqhfSAizBk64J8bmgyYvmIkRQE8eMjz-5i61lasNPOA3YbL4J5_hd2Vc_ C# 72dpi的图片怎么转换为300dpi 2010-08-30 11:08匿名 | 分类:C#/.NET | 浏览2500次 C

zjwen2007的专栏 3870

winform适应不同的分辨率_[C#](纯Winform)让UI适应不同分辨率

摘要:[C#](纯Winform)让UI适应不同分辨率这是一项非常大的困扰,所以我把我找来的知识全部做个整理。特别是针对Winform的部分,若是WPF建议使用ViewBox并且设定适合的模式。大致的概念是这样:Step 1: 将你的UI先固定大小,但实际操作还是依个人以及美工的复杂度(图片越复杂就要小心所谓的作用范围问题,以免图片重叠等等),像有的时候Label需要用AutoSize=true,...

weixin_35012566的博客 1911

【C#】改变图片大小

/// <summary> /// 改变图像大小 /// </summary> public static Image ReSizeImage(Image img, Size size) { Bitmap bitmap = new Bitmap(size.Width, size.Height); Graphics g = Graphics.FromI...

GreAmbWang的博客 2597

图片大小如何调整到10k?图片压缩到指定大小怎么弄?

在现代社交网络和在线平台上,上传的图片大小都会有限制,过大的图像会导致性能问题、加载时间延长和带宽消耗,所以图片压缩指定大小(https://www.yasuotu.com/imagesize)就成了必不可少的压缩图片大小的工具,下面就以照片压缩到10k以下为例子,给大家讲解一下怎么操作。以上就是图片大小如何调整到10k的操作方法了,想要将图片压缩至固定大小的小伙伴通过以上方法来处理,除了图片缩小kb之外,压缩图还支持修改图片尺寸、抠图、修改图片分辨率等,都是平时大家工作、生活中用的上的功能。

soul_610的博客 2821

图片批量修改大小

using System;using System.Collections.Generic;using System.Configuration;using System.Data;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using Common;using DBAc...

dengyidan4742的博客 109

如何将图片调整为固定大小?怎么自定义压缩图片大小?

如果我们发布的图片太大的话,就需要对图片进行压缩处理了。想要缩小图片kb可以使用压缩图的。根据上述的方法我们就可以不需要下载安装图片压缩工具来修改图片大小,上传平台时如果还有分辨率的要求,可以继续使用压缩图的。工具,直接将图片自定义压缩图片大小,一步到位,不需要二次压缩,操作方法也是非常简单,一起来看一下吧。浏览器搜索“压缩图”,打开网站之后在工具栏中选择【图片压缩指定大小】功能。选择图片压缩,单张图片最大支持100M,单次最多批量压缩60张图片。在期望大小值输入数值,点击开始压缩,完成后保存图片。

m0_71314894的博客 964

C#快速获取图像大小和分辨率(shell32)

C#快速获取图像大小和分辨率(shell32) 昨天使用metadata-extractor获取图像和分辨率,对于绝大多数图片的提取没有问题,今天进行批量图片测试发现对于JPEG格式为连续扫描的图片,数据惨不忍睹,读取时间比Image类还慢一半,无法忍受。。 尝试使用shell32,读取文件信息。未进行大批量测试,先做个记录 VS中引用 .COM 中的 Microsoft Shell Controls and Automation 然后 using Shell32; public static void G

zxpei的博客 2179

C#根据屏幕分辨率改变图片尺寸

最近工作中遇到一个问题,就是需要将程序文件夹中的图片根据此时电脑屏幕的分辨率来重新改变图片尺寸 以下为代码实现过程: 1、获取文件夹中的图片,此文件夹名为exe程序同目录下 //读取文件夹中文件 DirectoryInfo dir = new DirectoryInfo(@"文件夹名"); FileInfo[] fileInfo = dir.GetFiles(); List&lt...

weixin_34050427的博客 175
上一篇: newtonsoft.json的使用
下一篇: asp.net数据库缓存依赖
wingahi
博客等级 码龄15年 15粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值