版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、利達(dá)光電股份有限公司位圖位數(shù)的轉(zhuǎn)換用VC#2008實(shí)現(xiàn)彭軍河南省南陽(yáng)市工業(yè)南路508號(hào)2010年4月23曰利達(dá)光電股份有限公司|彭軍32010年4月23曰吟Bitmapconverter【口I迭擇WIPES片目錄:E照片樣品囲片轉(zhuǎn)換后為:32位保存目錄:E:開(kāi)瞬換|退出程序|彭軍出品老屬精品利達(dá)光電股份有限公司|彭軍#2010年4月23曰SolutionExplorer-BitmapConverter¥X隠l滲屋丨國(guó)打Solution'BitmapConverter1(1project)S-國(guó)BitmapConverter旦Properties!型References曹Bit
2、maplnfo.es白匡|Forml.cs也Forml.Designer.es崔|Forml.resx崔|NeverBitmap.cs曹Program.csForml.cs的全部程序:usingSystem;usingSystentCollectionsGeneric;usingSystern.ComponentModel:usingSystentData;usingSystentDrawing;usingSysteniLinq;usingSystentText;usingSystentWindows.Forms;usingSystentIO;namespaceBitmapConverterp
3、ublicpartialclassForml:FormFileinfofiles=null:publicForml()InitializeComponent();privatevoidForm1_Load(objectsender,EventArgse)/設(shè)置窗口的大小不可變this.MinimumSize=this.Size;this.MaximumSize=this.Size;設(shè)置默認(rèn)轉(zhuǎn)換為24位位圖cbxBitCount.Selectedlndex=1:/列出當(dāng)前目錄下位圖文件privatevoidListBnFilesOtryDirectorylnfodi=newDirectoryln
4、fo(tbxDirectory.TextTrimO);files=di.GetFiles("水.bmp");foreach(Fileinfofinfiles)ListViewItemlvi=listViewl.ItemsAdd(fFullName);Bitmapinfobi=newBitmapInfo(f.FullName):lvi.SubItemsAdd(biGetBitCount()ToStringO);lvi.SubItemsAdd(biGetHeight()ToString();lvi.SubItems.Add(bi.GetWidth().ToStringO);ca
5、tch(Exceptione)MessageBox.Show(e.Message,"錯(cuò)誤");return;privatevoidtbxDirectory_Click(objectsender,EventArgse)/選擇需轉(zhuǎn)換的位圖文件所在的目錄FolderBrowserDialogfbd=newFolderBrowserDialog();if(fbd.ShoWialogO!=DialogResult.OK)return;tbxDirectory.Text二fbd.SelectedPath;1istViewl.Items.Clear();清空ListView中的內(nèi)容pro
6、gressBarl.Value=0;/還原進(jìn)度條ListBupFilesO;privatevoidbtnExitJC1ick(objectsender,EventArgse)this.Close();/從路徑中分割出文件名privatestringGetFileName(stringpath)stringparts=path.Split('');returnpartsparts.Length-1:privatevoidbtnStartjClick(objectsender,EventArgse)if(cbxBitCount.Text.Trim()="”)Message
7、Box.Show(”請(qǐng)選擇轉(zhuǎn)換后的位圖位數(shù)!","錯(cuò)誤”);return;if(tbxDirectory.Text.Trim()="”)MessageBox.Show(”請(qǐng)選擇位圖所在的LI錄!","錯(cuò)誤");return;if(files=null|files.Length=0)MessageBox.Show(”當(dāng)前目錄下沒(méi)有位圖!","錯(cuò)誤");return;if(tbxDirectory.TextTrim()=tbxSaveDirTextTrim()MessageBox.ShowC兩個(gè)H錄不能相同!
8、”,"錯(cuò)誤”);return;progressBar1.Value=0;progressBar1.Minimum=0;progressBar1.Maximum=files.Length;for(inti二0;ifiles.Length;i+)ListViewItemlvi=listViewl.ltemsi;UIntl6choose=ConvertToUIntl6(cbxBitCountTextTrim()ToString();stringsavepath二tbxSaveDir.TextTrim()+""+GetFileName(lvi.SubItems0TextT
9、rim();NeverBitmapnb=newNeverBitmap(lvi.SubItems0TextTrim(),savepath);if(lvi.SubItemslText=cbxBitCount.Text)progressBar1.Value+;lvi.Sublterns0.Text+二"無(wú)需轉(zhuǎn)換";continue;elseif(lvi.SubItems1.Text="8")switch(choose)case24:nb.Bit8To24();break;case32:nb.Bit8To32();break;elseif(lvi.Subitem
10、s1.Text="24")switch(choose)case8:nb.Bit24To8();break;case32:nb.Bit24To32();break;elseif(lvi.Subitems1.Text="32")switch(choose)case8:nb.Bit32To8();break;case24:nb.Bit32To24();break;elsecontinue;progressBar1.Value+;lvi.Subitems0.Text+="完成";privatevoidtbxSaveDir_Click(obje
11、ctsender,EventArgse)設(shè)置保存目錄,不能和原目錄一致FolderBrowserDialogfbd=newFolderBrowserDialog();if(fbd.Shovi)ialog()!=DialogResult0K)return;tbxSaveDirText二fbd.SelectedPsth;Bitmaplnfo.es的全部程序:usingSystem;usingSystentCollectionsGeneric;usingSystentLinq:usingSystem.Text;usingSystem.10;usingSystentDrawing;usingSyste
12、ntDrawing.Imaging;namespaceBitmapConverterclassBitmapInfoBitmapbmp=null;publicBitmaplnfo(stringpath)bw=newBitmap(path);publicintGetWidthO/返回位圖寬度if(bnp=null)returnT;returnbmp.Width;publicintGetHeight()/返回位圖高度if(bnp=null)returnT;returnbmp.Height;publicintGetBitCount()/返回位圖位數(shù)if(bnp.PixelFormat=PixelFor
13、mat.Format24bppRgb)return24;elseif(bmp.PixelFormat=PixelFormat.Format32bppRgb|bnp.PixelFormat=PixelFormat.Format32bppPArgb|bnp.PixelFormat=PixelFormat.Format32bppArgb)return32;elseif(bmp.PixelFormat=PixelFormat.Format8bpplndexed)return8;elsereturnT;NeverBitmap.es的全部程序:usingSystem;usingSystentCollect
14、ionsGeneric;usingSysteniLinq;usingSystentText;usingSystentDrawing.Imaging;usingSystentDrawing;usingSystent10;利達(dá)光電股份有限公司|彭軍112010年4月23曰利達(dá)光電股份有限公司|彭軍#2010年4月23曰namespaceBitmapConverterclassNeverBitmapstructBitmapFileHeader/位圖文件頭publicUIntl6publicUInt32bfType;bfSize:publicUIntl6publicpublicUIntl6UInt32
15、bfReservedl;bfReserved2;bfOffBits;structBitmapInfoHeader/位圖信息頭publicUInt32biSize:publicUInt32biWidth;publicUInt32biHeight;publicUIntl6biPlanes:publicUIntl6biBitCount;publicUInt32biCompression;publicUInt32biSizelmage;publicUInt32biXPelsPerMeter;publicUInt32biYPelsPerMeter;publicUInt32biClrUsed;public
16、UInt32biClrlnportant;structRGBQUAD/位圖調(diào)色板項(xiàng)publicbytergbBlue;publicbytergbGreen:publicbytergbRed:publicbytergbReserved;利達(dá)光電股份有限公司|彭軍132010年4月23曰privatestringf訂epath=null;/需打開(kāi)的位圖的路徑privatestringsavepath二null;/轉(zhuǎn)換后位圖的保存路徑privateBitmapFi1eHeaderbfh;privateBitmapInfoHeaderbih:publicNeverBitmap(stringopenpa
17、th,stringsavepath)thisfilepath=openDath;this,savepath=savepath;privatevoidSaveSBits(Bitmapbmp)/為位圖文件頭賦值bfh.bfOffBits=107&bfh.bfReservedl=0;bfh.bfReserved2=0;bfh.bfSize=14;bfh.bfType=19778;為位圖信息頭賦值bihbiBitCount二8:bih.biClrlnportant=0;bih.biClrUsed=0;bih.biCompression=0:bih.biHeight=(uint)bn.Heigh
18、t;bih.biPlanes=1;bih.biSize=40;bih.biSizeImage=(uint)(bnp.Height*(bmp.Width*8+31)/32*4);bih.biWidth二(uint)bmp.Width:bih.biXPelsPerMeter二0;bih.biYPelsPerMeter=0;/構(gòu)造256色的調(diào)色板,非索引圖R(SQUADpal二newRGBQUAD256;for(inti二0;i256;i卄)palirgbBlue=(byte)i;palirgbGreen=(byte)i;palirgbRed=(byte)i;palirgbReserved=0;Fi
19、lelnfof=newFileinfo(savepath);using(BinaryV/riterbw=newBinaryWriter(f.OpenWrite()寫(xiě)入文件頭bw.Vftrite(bfhbfType);bw.Write(bfh.bfSize);bw.Vftrite(bfhbfReservedl);bw.Vftrite(bfhbfReserved2);bw.Write(bfh.bfOffBits);寫(xiě)入信息頭bw.Write(bih.biSize);bw.Write(bih.biWidth);bw.Write(bih.biHeight);bw.Vftrite(bih.biPlane
20、s);bw.毗ite(bihbiBitCount);bw.毗ite(bih.biCompression);bw.毗ite(bihbiSizeimage);bw.Write(bih.biXPelsPerMeter);bw.Write(bih.biYPelsPerMeter);bw.Write(bih.biClrUsed);bw.Vftrite(bih.biClrImportant);寫(xiě)入調(diào)色板for(inti=0;i<256;i+)bw.Write(palirgbBlue);bw.V/rite(palirgbGreen);bw.V/rite(palirgbRed);bw.Write(pal
21、irgbReserved);/位圖上下翻轉(zhuǎn)bnDRototeFlip(RototeFlipTypeRototel80FlipX);BitmapDatsdata=bmp.LockBits(newRectangle©0,bnpWidt扎bmp.Height),ImageLockMode.Readonly,PixelFormat.Format8bppIndexed);unsafebyte*ptr=(byte*)data.ScanO.ToPointer()J/L圖的指針byteline=newbytedata.Stride:/保存位圖的一行for(inti=0;i<data.Strid
22、e:i+)linei=0;for(inti=0;i<bnp.Height;i+)for(intj二0;jbmp.Width;j+)linefj=*ptr+;ptr+二data.Stride-bn?).Width;/Jr針跳過(guò)對(duì)齊的字節(jié)bw.Write(line,0,line.Length):寫(xiě)入位圖的一行bw.Close();bnpUnlockBits(dato);publicvoidBit8To24()Bitmapbmp8=newBitmap(filepath);BitmapDatsdata8=bmp8LockBits(newRectangle(0,0,bmp8Width,bnp8.H
23、eight),ImageLockModeReadonly,PixelFormatFormat8bppIndexed);Bitmapbmp24=newBitmap(bmp8.Width,bnp8.Height,PixelFormat.Format24bppRgb);BitmapDatsdata24=bmp24.LockBits(newRectangle©0,利達(dá)光電股份有限公司|彭軍172010年4月23曰位圖彳盤(pán)的超bnp24.Width,bn?)24.Height),ImageLockMode.WriteOnly,PixelFormat.Format24bppRgb);unsafe
24、byte*ptr8=(byte*)data8.ScanO.ToPointer();byte*ptr24=(byte*)data24.ScanO.ToPointerO;for(inti=0;i<bropS.Height;i+)for(intj=0;j<b叩8.Width;j+)/用8位位圖的灰度值填充24位位圖的R、G、B值*ptr24+二切tr8;*ptr24+二切tr8;*ptr24+二切tr8+;ptr8+二data8.Stride-bn?)8.Width;/跳過(guò)對(duì)齊字節(jié)ptr24+二data24.Stride-bn?)8.Width*3;/跳過(guò)對(duì)齊字節(jié)bw8UnlockBit
25、s(data8);bw24.UnlockBits(data24);bw24.Save(savepath);publicvoidBit8To32()Bitmapbmp8=newBitmap(filepath);BitmapDatadata8=bnp8LockBits(newRectangle(0,0,bmp8Width,bnp8.Height),ImageLockModeReadonly,PixelFormatFormat8bppIndexed);Bitmapbmp32=newBitmap(bmp8.Width,bnp8.Height,PixelFormat.Format32bppArgb);B
26、itmapDatadata32=bmp32.LockBits(newRectangle©0,bnp32.Width,bn?)32Height),ImageLockModeWriteOnly,PixelFormat.Format32bppArgb);利達(dá)光電股份有限公司|彭軍192010年4月23曰unsafebyte*ptr8=(byte*)data8Scan0.ToPointer();byte*ptr32=(byte*)data32.ScanO.ToPointerO;for(inti=0;i<bn)8.Height;i+)for(intj=0;j<b叩&Widt
27、h:j+)/用8位位圖的灰度值,填充32位位圖的RGB值,透明度為100%*ptr32+二切比8;*ptr32+二切比8;*ptr32+=切tr8+;*ptr32+=255;ptr8udata8Stride一bn?)8Width;ptr32+二data32.Stride-bmp8.Width*4;bw8UnlockBits(data8);bw32UnlockBits(dats32);bw32Save(savepath);publicvoidBit24To8()Bitmapbmp24=newBitmap(filepath);BitmapDatsdata24=bmp24LockBits(newRe
28、ctangle©0,bnp24.Width,bn?)24.Height),ImageLockModeReadonly,PixelFormat.Format24bppRgb);Bitmapbmp8=newBitmap(bnp24.Width,bmp24.Height,PixelFormat.Format8bppIndexed);BitmapDatsdata8=bmp8LockBits(newRectangle(0,0,bmp8.Width,bn8.Height),ImageLockModeWriteOnly,PixelFormatFormat8bppIndexed);unsafebyt
29、e*ptr24=(byte*)data24.ScanO.ToPointer();byte*ptr8=(byte*)data8.ScanO.ToPointer();for(inti=0;i<brop8.Height;i+)for(intj=0;j<bw8.Width:j+)/用RGB值的均值作為8位位圖的灰度值*ptr8+=(byte)(int)(*ptr24+)+(int)(>:<ptr24+)+(int)(切tr24卄)/3);ptr24+二data24.Stride-bmp8.Width*3;ptr8udata8.Stride一bn?8.Width;bw8Unloc
30、kBits(data8);bw24.UnlockBits(data24);Save8Bits(bmp8);publicvoidBit32To8()Bitmapbmp32=newBitmap(filepath);BitmapDatodata32=bmp32.LockBits(newRectangle©0,bnp32.Width,bn>32Height),ImageLockModeReadonly,PixelFormatFormat32bppArgb);Bitmapbmp8=newBitmap(bnp32Width,bmp32.Height,PixelFormatFormat8bp
31、pIndexed);BitmapDatodata8=bnp8LockBits(newRectangle(0,0,bmp8.Width,bnp8.Height),ImageLockModeWriteOnly,PixelFormatFormat8bppIndexed);unsafebyte*ptr32=(byte*)data32.ScanO.ToPointer();byte*ptr8=(byte*)data8Scan0ToPointer();for(inti=0;i<bropS.Height;i+)for(intj=0;j<bw8.Width:j+)/用32位位圖的RC®值的
32、均值作為8位位圖的灰度值*ptr8+二(byte)(int)Gptr32卄)+(int)(即比32+)+(int)(*ptr32+)/3);ptr32卄;跳過(guò)透明度字節(jié)ptr32+=data32.Stride-bmp32Width*4;ptr8udata8Stride一bn?)8.Width;bw8UnlockBits(data8);bw32UnlockBits(dato32);Save8Bits(bmp8);publicvoidBit32To24()Bitmapbmp32=newBitmap(filepath);BitmapDatodata32=bmp32.LockBits(newRecta
33、ngle©0,bnp32.Width,bn?)32Height),ImageLockMode.Readonly,PixelFormat.Format32bppArgb);Bitmapbmp24=newBitmap(bmp32.Width,bn32.Height,PixelFormat.Format24bppRgb);BitmapDatadata24=bmp24.LockBits(newRectangle(0,0,bnp24.Width,bn?)24.Height),ImageLockMode.WriteOnly,PixelFormat.Format24bppRgb);unsafebyte*ptr32=(byte*)data32.ScanO.ToPointer();byte*ptr24=(byte*)data24ScanO.ToPointer();for(in
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)數(shù)學(xué)教育中的美育價(jià)值體現(xiàn)
- 家裝LED燈的智能調(diào)光技術(shù)探討
- 二零二五年度物聯(lián)網(wǎng)技術(shù)應(yīng)用2025版合作協(xié)議2篇
- 二零二五年度地鐵工程鋼筋批量采購(gòu)協(xié)議3篇
- 2025年度綠色建筑節(jié)能改造認(rèn)籌協(xié)議書(shū)(綠色建筑)3篇
- 小學(xué)音樂(lè)創(chuàng)作中的創(chuàng)新教學(xué)方法探討
- 2025年人教五四新版七年級(jí)科學(xué)下冊(cè)階段測(cè)試試卷
- 二零二五年度建筑安全生產(chǎn)補(bǔ)償協(xié)議書(shū)范本3篇
- 小學(xué)閱讀教育中的情感培養(yǎng)與引導(dǎo)
- 2024版供應(yīng)鏈談判流程與協(xié)議風(fēng)險(xiǎn)防控版B版
- 全面做好駐村第一書(shū)記駐村工作駐村第一書(shū)記工作開(kāi)展.doc
- 超星爾雅學(xué)習(xí)通《通航空與航天(復(fù)旦大學(xué)上海大學(xué))》章節(jié)測(cè)試附答案
- 寒假學(xué)習(xí)計(jì)劃表
- 糖尿病酮癥酸中毒病例討論-文檔資料
- 電力建設(shè)安全工作規(guī)程解析(線(xiàn)路部分)課件
- 軟膠囊生產(chǎn)工藝流程
- 液相色譜質(zhì)譜質(zhì)譜儀LCMSMSSYSTEM
- 派克與永華互換表
- 宣傳廣告彩頁(yè)制作合同
- 小學(xué)高年級(jí)語(yǔ)文作文情景互動(dòng)教學(xué)策略探究教研課題論文開(kāi)題中期結(jié)題報(bào)告教學(xué)反思經(jīng)驗(yàn)交流
- 【語(yǔ)法】小學(xué)英語(yǔ)語(yǔ)法大全
評(píng)論
0/150
提交評(píng)論