批量压缩图片

简介: 批量压缩图片
// See https://aka.ms/new-console-template for more information
using ReduceImage;

Console.WriteLine("Hello, World!");

string folderPath = "C:\\Users\\shiningrise\\Desktop\\fsdownload\\UploadFiles"; // 将此处替换为要遍历的文件夹路径

Bianli(folderPath);

void Bianli(string path)
{
    List<string> temp = new List<string>();
    temp.Add(path);
    for (int i = 0; i < temp.Count; i++)
    {
        if (File.Exists(temp[i]))
        {
            continue;
        }
        else
        {
            List<string> dirs = new List<string>(Directory.EnumerateDirectories(temp[i]));

            foreach (var dir in dirs)
            {
                temp.Add(dir);
            }
            List<string> files = new List<string>(Directory.EnumerateFiles(temp[i]));

            foreach (string file in files)
            {
                temp.Add(file);
            }
        }
    }

    foreach (string pathTemp in temp)
    {
        if (File.Exists(pathTemp))
            Img.ReduceImage(pathTemp, 768, 254);
        Console.WriteLine(pathTemp);
    }
}
using System;
using System.Net;
using System.IO;
using System.Text;
using System.Drawing;

namespace ReduceImage
{
    /// <summary>
    /// 下载远程图片保存到本地地址
    /// </summary>
    public class Img
    {
        public static void ReduceImage(string imageFile, int toWidth, int toHeight)
        {
            try
            {
                Image originalImage = Image.FromFile(imageFile);
                if (toWidth <= 0 && toHeight <= 0)
                {
                    return;
                }
                else if (toWidth > 0 && toHeight > 0)
                {
                    if (originalImage.Width < toWidth && originalImage.Height < toHeight)
                        return;
                }
                else if (toWidth <= 0 && toHeight > 0)
                {
                    if (originalImage.Height < toHeight)
                        return;
                    toWidth = originalImage.Width * toHeight / originalImage.Height;
                }
                else if (toHeight <= 0 && toWidth > 0)
                {
                    if (originalImage.Width < toWidth)
                        return;
                    toHeight = originalImage.Height * toWidth / originalImage.Width;
                }
                Image toBitmap = new Bitmap(toWidth, toHeight);
                try
                {
                    using (Graphics g = Graphics.FromImage(toBitmap))
                    {
                        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
                        g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                        g.Clear(Color.Transparent);
                        g.DrawImage(originalImage,
                                    new Rectangle(0, 0, toWidth, toHeight),
                                    new Rectangle(0, 0, originalImage.Width, originalImage.Height),
                                    GraphicsUnit.Pixel);
                        originalImage.Dispose();
                        toBitmap.Save(imageFile, System.Drawing.Imaging.ImageFormat.Png);
                        toBitmap.Dispose();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    if (originalImage != null) originalImage.Dispose();
                    if (toBitmap != null) toBitmap.Dispose();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
目录
相关文章
|
6月前
批量获取图片(中)
批量获取图片(中)
60 0
|
6月前
批量获取图片(下)
批量获取图片(下)
66 0
|
20天前
|
Windows
写一个批处理,压缩一个文件夹下的所有图片大小
【10月更文挑战第14天】在Windows环境下,使用批处理脚本可以方便地批量压缩图片。以下是一个示例脚本,用于压缩指定目录下的所有.jpg和.png文件,并将压缩后的图片保存到另一个目录中。
|
26天前
|
存储 编解码 算法
Lottie 动画文件的压缩技术与策略
10月更文挑战第16天】综上所述,Lottie 动画文件的压缩是一项重要的工作。通过合理选择压缩方法和策略,结合适当的工具和技术,可以在保证动画质量的前提下,有效地减小文件的大小,提升应用的性能和用户体验。
45 1
|
5月前
|
存储 Python
python实现图片与视频转换:将视频保存为图片,将批量图片保存为视频
python实现图片与视频转换:将视频保存为图片,将批量图片保存为视频
|
6月前
防止图片重复下载方案,图像压缩保存与压缩显示
防止图片重复下载方案,图像压缩保存与压缩显示
62 0
|
6月前
|
iOS开发 MacOS Python
批量获取图片(上)
批量获取图片(上)
48 0
|
Python
【图片操作】批量生成缩略图
在我们日常生活中,缩略图很大程度减少了我们内存的使用。如果我们看一张图片就必须加载完成后才能看,那么我们就会发现很多应用都变慢了很多,而且流量也消耗的很快。今天我们就来看看Python生成缩略图的操作。
377 0
|
JavaScript
原生js实现图片单张上传及批量上传
原生js实现图片单张上传及批量上传
|
JavaScript 程序员 API
Nodejs实现图片的上传、压缩预览、定时删除。
我们程序员日常都会用到图片压缩,面对这么常用的功能,肯定要尝试实现一番。