内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

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

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

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

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

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

先上一個程序的截圖:

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

我們通過選擇圖片的原目錄以及目標目錄,設置好壓縮大小和壓縮質量,點擊開始壓縮按鈕,即可進行批量圖片壓縮。

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

好了,很簡單的一個界面,下面我們直接上幾段核心代碼:

/// <summary>
/// 壓縮圖片方法
/// </summary>
/// <param name="sourcePath">原目錄</param>
/// <param name="targetPath">目標目錄</param>
/// <returns>壓縮是否成功</returns>
private bool CompressPicture(string sourcePath, string targetPath)
{
    try
    {
        double sizeRate = double.Parse(cbSizeRate.Text) / 100;// 大小比率
        int qualityRate = int.Parse(cbQualityRate.Text);// 品質比率
              
        Image sourceImage = Image.FromFile(sourcePath);
        //調整圖片大小
        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;
    }
}
/// <summary>
/// 保存為JPEG格式,支持壓縮質量選項
/// </summary>
/// <param name="bmp">原始位圖</param>
/// <param name="FileName">新文件地址</param>
/// <param name="Qty">壓縮質量,越大越好,文件也越大(0-100)</param>
/// <returns>成功標志</returns>
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;
    }
}
/// <summary>
/// 保存JPG時用
/// </summary>
/// <param name="mimeType"></param>
/// <returns>得到指定mimeType的ImageCodecInfo</returns>
private static ImageCodecInfo GetCodecInfo(string mimeType)
{
    ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();
    foreach (ImageCodecInfo ici in CodecInfo)
    {
        if (ici.MimeType == mimeType) return ici;
    }
    return null;
}
/// <summary>
/// 遍歷文件
/// </summary>
/// <param name="info"></param>
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]); //對于子目錄,進行遞歸調用
        }
    }
}

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

標題名稱:用C#開發(fā)一個WinForm版的批量圖片壓縮工具
文章網(wǎng)址:http://www.rwnh.cn/article30/gspepo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)網(wǎng)站導航、網(wǎng)站設計網(wǎng)頁設計公司、網(wǎng)站收錄、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設
苍梧县| 汽车| 萍乡市| 行唐县| 同德县| 鄂温| 板桥市| 黔西县| 佛教| 勐海县| 金寨县| 贵南县| 长阳| 重庆市| 星座| 珲春市| 大丰市| 陈巴尔虎旗| 南宁市| 昭觉县| 前郭尔| 扎囊县| 图木舒克市| 罗定市| 沂水县| 海安县| 萝北县| 荃湾区| 右玉县| 漳浦县| 曲靖市| 铁岭市| 会宁县| 南召县| 雷山县| 克山县| 清徐县| 岚皋县| 习水县| 西昌市| 舞阳县|