真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

用C#開(kāi)發(fā)一個(gè)WinForm版的批量圖片壓縮工具

我們?cè)趯?shí)際項(xiàng)目開(kāi)發(fā)過(guò)程中,曾經(jīng)遇到過(guò)一個(gè)需求,就是要開(kāi)發(fā)一個(gè)對(duì)大量圖片進(jìn)行整理(刪除掉一些不符合要求的圖片)、歸類(根據(jù)格式進(jìn)行分類,比如jpg格式、bmp格式等)、壓縮(因?yàn)橛械膱D片很大很占空間,看能否在保證清晰可辨、尺寸適中的前提下,適當(dāng)?shù)膲嚎s掉一部分空間)的小程序。這里只是重點(diǎn)分享一下如何對(duì)圖片進(jìn)行壓縮。

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括隆回網(wǎng)站建設(shè)、隆回網(wǎng)站制作、隆回網(wǎng)頁(yè)制作以及隆回網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,隆回網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到隆回省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

我們也不是水平非常高的圖像處理專家,但是實(shí)際項(xiàng)目中又有這個(gè)需求,作為普通的程序員應(yīng)該如何滿足這個(gè)要求呢?

很顯然,最簡(jiǎn)單的思路就是適當(dāng)?shù)目s小原圖的尺寸大小或者是適當(dāng)?shù)慕档驮瓐D的質(zhì)量要求,這樣就能有效地降低原圖所占的空間。

先上一個(gè)程序的截圖:

用C#開(kāi)發(fā)一個(gè)WinForm版的批量圖片壓縮工具

我們通過(guò)選擇圖片的原目錄以及目標(biāo)目錄,設(shè)置好壓縮大小和壓縮質(zhì)量,點(diǎn)擊開(kāi)始?jí)嚎s按鈕,即可進(jìn)行批量圖片壓縮。

在圖片的原目錄選擇當(dāng)中,能夠遍歷根目錄下的所有圖片(包括子目錄下的圖片)。

好了,很簡(jiǎn)單的一個(gè)界面,下面我們直接上幾段核心代碼:

/// 
/// 壓縮圖片方法
/// 
/// 原目錄
/// 目標(biāo)目錄
/// 壓縮是否成功
private bool CompressPicture(string sourcePath, string targetPath)
{
    try
    {
        double sizeRate = double.Parse(cbSizeRate.Text) / 100;// 大小比率
        int qualityRate = int.Parse(cbQualityRate.Text);// 品質(zhì)比率
              
        Image sourceImage = Image.FromFile(sourcePath);
        //調(diào)整圖片大小
        Bitmap bmp = new Bitmap(sourceImage, new Size((int)(sourceImage.Width * sizeRate), (int)(sourceImage.Height * sizeRate)));
        //壓縮圖片
        SaveAsJPEG(bmp, targetPath, qualityRate);
              
        GC.Collect();
        return true;
    }
    catch
    {
        return false;
    }
}
/// 
/// 保存為JPEG格式,支持壓縮質(zhì)量選項(xiàng)
/// 
/// 原始位圖
/// 新文件地址
/// 壓縮質(zhì)量,越大越好,文件也越大(0-100)
/// 成功標(biāo)志
public static bool SaveAsJPEG(Bitmap bmp, string FileName, int Qty)
{
    try
    {
        EncoderParameter p;
        EncoderParameters ps;
           
        ps = new EncoderParameters(1);
           
        p = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Qty);
        ps.Param[0] = p;
           
        bmp.Save(FileName, GetCodecInfo("p_w_picpath/jpeg"), ps);
           
        return true;
    }
    catch
    {
        return false;
    }
}
/// 
/// 保存JPG時(shí)用
/// 
/// 
/// 得到指定mimeType的ImageCodecInfo
private static ImageCodecInfo GetCodecInfo(string mimeType)
{
    ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();
    foreach (ImageCodecInfo ici in CodecInfo)
    {
        if (ici.MimeType == mimeType) return ici;
    }
    return null;
}
/// 
/// 遍歷文件
/// 
/// 
public void ListFiles(FileSystemInfo info)
{
    if (!info.Exists) return;
    DirectoryInfo dir = info as DirectoryInfo;
    if (dir == null) return;
    FileSystemInfo[] files = dir.GetFileSystemInfos();
    for (int i = 0; i < files.Length; i++)
    {
        FileInfo file = files[i] as FileInfo;
        if (file != null && file.Name.Trim().LastIndexOf(".") > -1)
        {
            if (file.Name.Substring(file.Name.LastIndexOf(".")).ToUpper() == ".JPG")
            {
                this.lvSourceFolderList.Items.Add(file.FullName);
                p_w_picpathList.Add(file.FullName);
            }
        }
        else
        {
            ListFiles(files[i]); //對(duì)于子目錄,進(jìn)行遞歸調(diào)用
        }
    }
}

源代碼下載地址:WinForm批量圖片壓縮工具源碼


網(wǎng)站名稱:用C#開(kāi)發(fā)一個(gè)WinForm版的批量圖片壓縮工具
地址分享:http://weahome.cn/article/gspepo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部