• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    用C++開發(fā)圖片批量處理軟件

    2009-07-24 08:51:42
    中國教育信息化 2009年6期
    關(guān)鍵詞:文件名批量像素

    曹 娜

    一、需求分析

    筆者從事國畫教學(xué)工作,但也是一個(gè)編程發(fā)燒友,在長期從事畫畫的創(chuàng)作中,利用信息化手段,將創(chuàng)造作品保存到計(jì)算機(jī)里,通過網(wǎng)絡(luò)可以和同行進(jìn)行交流,也可以將自己的作品公布到網(wǎng)站上,為教學(xué)研究開創(chuàng)了一條創(chuàng)新之路。但在通過網(wǎng)絡(luò)交流的時(shí)候遇到了一個(gè)很大的問題,用數(shù)碼相機(jī)或者掃描儀,獲取的圖片字節(jié)數(shù)太大,少則幾兆,多則幾十兆,給網(wǎng)絡(luò)傳輸和網(wǎng)站公布都帶來了不少的麻煩,通過PS能夠?qū)⑦@些大字節(jié)數(shù)的圖片文件處理為大小適中的圖片(以便使備份與同行相互遠(yuǎn)程傳輸也顯得比較容易)。但不能夠自動批量處理,而其有版權(quán)的問題,經(jīng)過半年的努力,筆者用C++開發(fā)了自動批量處理的圖片處理軟件。

    軟件開發(fā)考慮到可應(yīng)用到其他領(lǐng)域,因此需考慮通用的因素,軟件進(jìn)入界面如圖1所示。

    二、軟件功能

    1.視頻瀏覽:如果當(dāng)前文件夾下有視頻文件,可以進(jìn)行瀏覽,只能播放mpeg格式,如果圖片文件列表第一個(gè)文件是視頻格式文件,就自動播放,如果要處理圖片文件,單擊“結(jié)束視頻”。

    2.轉(zhuǎn)換圖片:單擊文件列表框文件,單擊“轉(zhuǎn)換設(shè)置”顯示當(dāng)前選準(zhǔn)圖片的像素高度和寬度,保持圖片縱橫比保持圖片不變形,輸入要轉(zhuǎn)換的像素?cái)?shù)據(jù),按照原圖片的縱橫比計(jì)算相對應(yīng)的像素,并加以顯示。選擇“轉(zhuǎn)換當(dāng)前圖片”,是指轉(zhuǎn)換當(dāng)前選準(zhǔn)的圖片,選擇“連續(xù)轉(zhuǎn)換”是指自動連續(xù)轉(zhuǎn)換左邊文件列表框內(nèi)的所有圖片文件,按照統(tǒng)一像素尺寸、同一格式進(jìn)行轉(zhuǎn)換,這種情況適用于圖片大小格式一樣的一組照片;“轉(zhuǎn)換文件另存”是指轉(zhuǎn)換成的目標(biāo)文件另存為,原文件名_1.jpg,

    “覆蓋原文件”是指轉(zhuǎn)換動作完成生成的文件名就是選準(zhǔn)的文件名,將原文件名覆蓋,這種覆蓋無法恢復(fù)。

    3.可用于教師編寫專業(yè)教材時(shí),對教材插圖的處理,利用單個(gè)圖片文件的處理。

    三、代碼實(shí)現(xiàn)

    單擊“執(zhí)行”(Button7)事件函數(shù)

    void__fastcall TForm1::Button7Click(TObject *Sender)

    {

    Form1->Button8->Enabled=false;

    Form1->Panel6->Visible=false;

    if(Form1->RadioButton1->Checked==true)//轉(zhuǎn)換當(dāng)前圖片

    {

    ppc=ppc.LowerCase();

    int k=ppc.Pos(".jpg");

    int k1=ppc.Pos(".jpeg");

    int j=ppc.Pos(".bmp");

    if(j>0 || k>0 || k1>0)

    {

    WRJPG(ppc);//-----轉(zhuǎn)換函數(shù)

    Application->MessageBox("圖片大小轉(zhuǎn)換成功","信息",48);

    Form1->FileListBox1->Update();

    }

    else

    {

    String kdv="";

    kdv=kdv+ppc+"不是圖片文件,所以無法轉(zhuǎn)換";

    Application->MessageBox(kdv.c_str(),"信息",48);

    }

    }

    if(Form1->RadioButton2->Checked==true)//連續(xù)轉(zhuǎn)換

    {

    int mk=Form1->FileListBox1->Items->Count;//獲取圖片文件列表總數(shù)

    int ndkf=0;

    Form1->ProgressBar1->Min=0;

    Form1->ProgressBar1->Max=mk;

    Form1->ProgressBar1->Visible=true;

    for(int i=0;i<mk;i++)//---執(zhí)行連續(xù)轉(zhuǎn)換循環(huán)

    {

    Form1->ProgressBar1->Position=i;

    Application->ProcessMessages();

    ppc=Form1->FileListBox1->Items->Strings[i];

    ppc=ppc.LowerCase();

    int k=ppc.Pos(".jpg");

    int k1=ppc.Pos(".jpeg");

    int j=ppc.Pos(".bmp");

    if(j>0 || k>0 || k1>0)

    {

    try {

    Form1->Image1->Picture->LoadFromFile(ppc);

    ndkf=ndkf+1;

    WRJPG(ppc);//--核心轉(zhuǎn)換函數(shù)

    }

    catch(...){}

    }

    }

    Form1->ProgressBar1->Position=mk;

    Form1->ProgressBar1->Visible=false;

    Form1->FileListBox1->Update();

    String dkc="";

    dkc=dkc+"共有"+IntToStr(ndkf).c_str()+"個(gè)圖片文件進(jìn)行成功轉(zhuǎn)換"; ;

    Application->MessageBox(dkc.c_str(),"信息",48);

    }

    Form1->Button8->Enabled=true;

    }

    核心轉(zhuǎn)換函數(shù)WRJPG();

    void __fastcall TForm1::WRJPG(AnsiString filename)

    {

    if(p<=0 || q<=0) return ;//轉(zhuǎn)換像素的寬度和高度

    if(p>0 && q>0)

    {

    Graphics::TBitmap *tmpBitmap = new Graphics::TBitmap();//動態(tài)生成位圖類

    Graphics::TBitmap *tmpBitmap2 = new Graphics::TBitmap();//動態(tài)生成位圖類

    TJPEGImage*tmpBitmap1 = new TJPEGImage();//動態(tài)生成JPG類

    filename=filename.LowerCase();

    int lq=filename.Pos(".bmp");

    int lp=filename.Pos(".jpg");

    int lp1=filename.Pos(".jpeg");

    if(lp>0 || lp1>0) {

    tmpBitmap1->LoadFromFile(filename);//將位圖裝載到生成的位圖類tmpBitmap1

    tmpBitmap->Assign(tmpBitmap1);//將位圖類轉(zhuǎn)換為jpg類

    }

    if(lq>0)

    tmpBitmap->LoadFromFile(filename);

    tmpBitmap2->W(wǎng)idth=q;

    tmpBitmap2->Height=p;

    tmpBitmap2->Canvas->StretchDraw(Rect

    (0,0,tmpBitmap2->W(wǎng)idth,tmpBitmap2->Height),tmpBitmap);//將轉(zhuǎn)換目標(biāo)像素畫布

    TJPEGImage *jp = new TJPEGImage();

    try

    {

    //將位圖文件寫入TJPEGImage 類

    jp->Assign(tmpBitmap2);

    jp->CompressionQuality = 85;//指的是轉(zhuǎn)換質(zhì)量,100為最高質(zhì)量,加上這句就可以了

    jp->Compress();//執(zhí)行寫入

    AnsiString jpc,jpd;

    //int l0=filename.Length();

    int l1=filename.Pos(".");

    if(l1>0)//有擴(kuò)展名

    {

    jpc=filename.SubString(1,l1-1);

    if(Form1->RadioButton4->Checked==true)//覆蓋原圖片文件

    {

    if(lp1>0)

    jpc=jpc+".jpeg";

    else

    jpc=jpc+".jpg";

    }

    if(Form1->RadioButton3->Checked==true)//另存為文件

    {

    if(lp1>0)

    jpc=jpc+"_1.jpeg";

    else

    jpc=jpc+"_1.jpg";//原文件名+“_1.jpg”

    }

    }

    if(l1<=0)//沒有擴(kuò)展名

    {

    jpc=filename;

    if(Form1->RadioButton4->Checked==true)

    {

    if(lp1>0)

    jpc=jpc+".jpeg";

    else

    jpc=jpc+".jpg";

    }

    if(Form1->RadioButton3->Checked==true)

    {

    if(lp1>0)

    jpc=jpc+"_1.jpeg";

    else

    jpc=jpc+"_1.jpg";

    }

    }

    //Application->MessageBox(jpc.c_str(),filename.c_str(),48);

    jp->SaveToFile(jpc);//將jpg類保存為jpc文件

    }

    __finally

    {

    delete jp;//刪除jp類

    }

    delete tmpBitmap;

    delete tmpBitmap1;

    delete tmpBitmap2;

    }//p>0 && q>0

    }

    猜你喜歡
    文件名批量像素
    趙運(yùn)哲作品
    藝術(shù)家(2023年8期)2023-11-02 02:05:28
    像素前線之“幻影”2000
    批量提交在配置分發(fā)中的應(yīng)用
    右鍵調(diào)用多重更名更方便
    電腦愛好者(2019年9期)2019-10-30 03:43:29
    Excel輕松提取文件名
    “像素”仙人掌
    高像素不是全部
    CHIP新電腦(2016年3期)2016-03-10 14:22:03
    淺議高校網(wǎng)銀批量代發(fā)
    不讓長文件名成為“絆腳石”
    電腦迷(2014年8期)2014-04-29 07:37:40
    基于AUTOIT3和VBA的POWERPOINT操作題自動批量批改
    昌乐县| 镇赉县| 瑞金市| 古蔺县| 九江县| 罗平县| 仪征市| 资溪县| 日喀则市| 岳池县| 洛浦县| 贵港市| 滁州市| 稻城县| 平武县| 基隆市| 金川县| 永嘉县| 四平市| 榕江县| 武穴市| 普洱| 涟水县| 独山县| 天门市| 和田县| 绥芬河市| 江西省| 余干县| 商洛市| 杭州市| 涞水县| 甘肃省| 望谟县| 南雄市| 察雅县| 岳阳县| 务川| 阿瓦提县| 上杭县| 阿巴嘎旗|