it编程 > 编程语言 > Asp.net

C#如何批量修改图片尺寸和DPI

23人参与 2025-05-30 Asp.net

c#批量修改图片尺寸和dpi

读取指定路径下的图片文件,修改图片尺寸和pdi

我的文件夹下都是图片

如果是混合的文件,自己写个后缀名过滤函数就行,或者修改  getfiles 过滤参数 “*”.

string[] filedir = directory.getfiles(root, "*.png", searchoption.alldirectories);
        private void button1_click(object sender, eventargs e)
        {
            string root = this.textbox1.text.trim();
 
            // 读取文件夹下的所有文件 (方法一)
            string[] filedir = directory.getfiles(root, "*", searchoption.alldirectories);
            foreach (string filename in filedir)
            {
                chagepicdpi(filename);
            }
 
             方法二
            //directoryinfo folder = new directoryinfo(root);
            //foreach (fileinfo file in folder.getfiles("*"))
            //{
            //    // 修改图片dpi
            //    chagepicdpi(file);
            //}
            messagebox.show("ok");
        }
 
        private void chagepicdpi(string filename)
        {
            int newwidth = 400;   // 固定图像宽度
            int dpi = 1200;    // 图像dpi             
 
            using (bitmap oldbitmap = new bitmap(filename))
            {
                int newheight = convert.toint32(1.0 * oldbitmap.height * newwidth / oldbitmap.width);   //  图像高度按照宽度等比变化
 
                using (bitmap newbitmap = new bitmap(newwidth, newheight, pixelformat.format24bpprgb))
                {
                    using (graphics g = graphics.fromimage(newbitmap))
                    {
                        g.clear(system.drawing.color.white);  // 背景白色
                        g.drawimage(oldbitmap, new rectangle(0, 0, newbitmap.width, newbitmap.height));
                        newbitmap.setresolution(dpi, dpi);  // 设置dpi
 
                        string newfilename = filename.replace("d:\\图形", "c:\\users\\administrator\\desktop\\11111");  // 替换文件路径
                        string dir = path.getdirectoryname(newfilename);
                        if (!directory.exists(dir))
                        {
                            directory.createdirectory(dir);
                        }
 
                        newbitmap.save(newfilename, oldbitmap.rawformat);   // 保存图片,按照图片原始格式保存
                    }
                }
            }
        }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

您想发表意见!!点此发布评论

推荐阅读

C#异步编程库AsyncEx的实现

05-30

C# 实现雪花算法(Snowflake Algorithm)的实现

05-30

深入理解C#中命令模式

05-30

使用C#删除Excel表格中的重复行数据的代码详解

05-29

Core i5-12400F搭配RTX 5060 Ti性能如何? 七款游戏性能测试出炉

05-28

Core i5-12400F搭配RX 9070 XT组装会拖后腿吗? 多款游戏性能测试对比

06-02

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论