導航:首頁 > 文件處理 > png壓縮c

png壓縮c

發布時間:2022-01-15 09:03:22

㈠ bmp格式轉換PNG格式 c語言或c++編程

BMP是最簡單的圖形存儲格式,在c++里有朋友封裝了一個類CDib.
只要把圖片使用附件中編輯--粘貼來源找到圖畫打開另存為選擇你想要的格式保存就可以了。也可以右鍵點擊選擇打開方式使用圖畫打開相同的方法。另外photoshop 和office2003的picture manage也有這個功能。

Private Sub mnuconvertBMPtoJPG_Click()
Dim tmpimage As imgdes ' Image descriptors
Dim tmp2image As imgdes
Dim rcode As Long
Dim quality As Long
Dim vbitcount As Long
Dim bdat As BITMAPINFOHEADER ' Reserve space for BMP struct
Dim bmp_fname As String
Dim jpg_fname As String

bmp_fname = "test.bmp"
jpg_fname = "test.jpg"

quality = 75
' Get info on the file we're to load
rcode = bmpinfo(bmp_fname, bdat)
If (rcode <> NO_ERROR) Then
MsgBox "Cannot find file", 0, "Error encountered!"
Exit Sub
End If

vbitcount = bdat.biBitCount
If (vbitcount >= 16) Then ' 16-, 24-, or 32-bit image is loaded into 24-bit buffer
vbitcount = 24
End If

' Allocate space for an image
rcode = allocimage(tmpimage, bdat.biWidth, bdat.biHeight, vbitcount)
If (rcode <> NO_ERROR) Then
MsgBox "Not enough memory", 0, "Error encountered!"
Exit Sub
End If

' Load image
rcode = loadbmp(bmp_fname, tmpimage)
If (rcode <> NO_ERROR) Then
freeimage tmpimage ' Free image on error
MsgBox "Cannot load file", 0, "Error encountered!"
Exit Sub
End If

If (vbitcount = 1) Then ' If we loaded a 1-bit image, convert to 8-bit grayscale
' because jpeg only supports 8-bit grayscale or 24-bit color images
rcode = allocimage(tmp2image, bdat.biWidth, bdat.biHeight, 8)
If (rcode = NO_ERROR) Then
rcode = convert1bitto8bit(tmpimage, tmp2image)
freeimage tmpimage ' Replace 1-bit image with grayscale image
imgdes tmp2image, tmpimage
End If
End If

' Save image
rcode = savejpg(jpg_fname, tmpimage, quality)
freeimage tmpimage

End Sub

........... Add these defines and declarations to your Global mole ...........
' Image descriptor
Type imgdes
ibuff As Long
stx As Long
sty As Long
endx As Long
endy As Long
buffwidth As Long
palette As Long
colors As Long
imgtype As Long
bmh As Long
hBitmap As Long
End Type

Type BITMAPINFOHEADER
biSize As Long
biWidth As Long
biHeight As Long
biPlanes As Integer
biBitCount As Integer
biCompression As Long
biSizeImage As Long
biXPelsPerMeter As Long
biYPelsPerMeter As Long
biClrUsed As Long
biClrImportant As Long
End Type

Declare Function bmpinfo Lib "VIC32.DLL" (ByVal Fname As String, bdat As BITMAPINFOHEADER) As Long
Declare Function allocimage Lib "VIC32.DLL" (image As imgdes, ByVal wid As Long, ByVal leng As Long, ByVal BPPixel As Long) As Long
Declare Function loadbmp Lib "VIC32.DLL" (ByVal Fname As String, desimg As imgdes) As Long
Declare Sub freeimage Lib "VIC32.DLL" (image As imgdes)
Declare Function convert1bitto8bit Lib "VIC32.DLL" (srcimg As imgdes, desimg As imgdes) As Long
Declare Sub imgdes Lib "VIC32.DLL" (srcimg As imgdes, desimg As imgdes)
Declare Function savejpg Lib "VIC32.DLL" (ByVal Fname As String, srcimg As imgdes, ByVal quality As Long) As Long

《圖像處理----做一個自己的photoshop》
大部分都是源碼,其中有bmp<-->jgep<-->GIF的代碼.

㈡ png轉換rar

在你這里學了一招,跟你探討一下。

我用jpg試了,完全沒問題,但是png不行,能看到圖像,但是不能解壓,好像跟你說的有點不一樣~

我用了個50多M的可執行文件試了試,居然也可以,圖像打開一點不慢,這招挺好~

㈢ png格式的圖片可以轉矢量圖嗎

png格式的圖片可以轉矢量圖么?這主要還是要取決你要達到什麼樣的效果了,我在這里可以給你推薦很方便的兩個軟體:
1,CorelDRAW軟體,一個和不錯的矢量處理和編輯軟體。操作方法如下:
a,導入你要使用的點陣圖,使用CorelDRAW自帶軟體Corel
TRACE進行矢量化處理,Corel
TRACE有和多模式供你選擇,於是說是很專業了。
b,完成後你可以使用CorelDRAW軟體進行編輯,直到達到你想要的效果。
c,具體操作你可以找點CorelDRAW的書來看看!
d,你可以輸出為矢量圖的格式:wmf
或ai等!
2,Flash
大家不會陌生吧,那我們來看看它在轉化矢量圖
a,打開軟體,導入你要使用的點陣圖,選中要轉化的點陣圖並打開菜單中的「修改」——「點陣圖」——「轉化點陣圖為適量圖」
b,調整好你要的參數(參數如果不確定,你多實驗幾次),電擊確定
c,用Flash的工具調整你的圖象
d,你可以輸出為矢量圖的格式:wmf
或ai等!
最後一點,看你要什麼樣的格式了,如果想都可以打開或導入使用的話建議使用wmf
或ai,因為支持他們的軟體基本都有!由
絲路教程網
回答,上市絲路旗下,專業教程網。

㈣ png是什麼格式會帶病毒嗎

基本上是款制圖軟體都可以輸出PNG格式的圖片。。。
PS可以直接生成PNG圖片。。。。
PNG主要優點是帶透明通道。。文件格式比較小

PNG,圖像文件存儲格式,其目的是試圖(原來此處使用了"企圖")替代GIF和TIFF文件格式,同時增加一些GIF文件格式所不具備的特性。流式網路圖形格式(Portable Network Graphic Format,PNG)名稱來源於非官方的「PNG's Not GIF」,是一種點陣圖文件(bitmap file)存儲格式,讀成「ping」。PNG用來存儲灰度圖像時,灰度圖像的深度可多到16位,存儲彩色圖像時,彩色圖像的深度可多到48位,並且還可存儲多到16位的α通道數據。

不是病毒來的!!
希望及時採納!

㈤ ps如何設置png圖片大小剛好能夠包裹圖片

沒太明白你所要表達的意思。就圖片縮放說一下吧。圖片a與圖片b放置在一起首先需要統一解析度,這樣放在一起不會有一張太虛,具體是在圖片上框上點右鍵,選擇圖像大小,調整成一致的解析度。

㈥ 大俠,可以告訴我怎麼用C語言以2進制讀取png圖片的寬和高嗎謝了!!!

添加62位元組的頭信息就可以了!

第一部分為點陣圖文件頭BITMAPFILEHEADER,是一個結構,其定義如下:
{
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
這個結構的長度是固定的,為14個位元組(WORD為無符號16位整數,DWORD為無符號32位整數),各個域的說明如下:
bfType
指定文件類型,必須是0x424D,即字元串 "BM ",也就是說所有.bmp文件的頭兩個位元組都是 "BM "
bfSize
指定文件大小,包括這14個位元組
bfReserved1,bfReserved2
為保留字,不用考慮
bfOffBits
為從文件頭到實際的點陣圖數據的偏移位元組數,即圖3中前三個部分的長度之和。
第二部分為點陣圖信息頭BITMAPINFOHEADER,也是一個結構,其定義如下:
typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
這個結構的長度是固定的,為40個位元組(WORD為無符號16位整數,DWORD無符
號32位整數,LONG為32位整數),各個域的說明如下:
biSize
指定這個結構的長度,為40
biWidth
指定圖象的寬度,單位是象素
biHeight
指定圖象的高度,單位是象素
biPlanes
必須是1,不用考慮
biBitCount
指定表示顏色時要用到的位數,常用的值為1(黑白二色圖),4(16色圖),8(256色),24(真彩色圖)(新的.bmp格式支持32位色,這里就不做討論了)。
biCompression
指定點陣圖是否壓縮,有效的值為BI_RGB,BI_RLE8,BI_RLE4,BI_BITFIELDS(都是一些Windows定義好的常量)。要說明的是,Windows點陣圖可以採用RLE4,和RLE8的壓縮格式,但用的不多。我們今後所討論的只有第一種不壓縮的情況,即biCompression 為BI_RGB的情況。
biSizeImage
指定實際的點陣圖數據佔用的位元組數,其實也可以從以下的公式中計算出來:
biSizeImage=biWidth '*biHeight
要注意的是:上述公式中的biWidth '必須是4的整倍數(所以不是biWidth,而是biWidth ',表示大於或等於biWidth的,離4最近的整倍數。舉個例子,如果biWidth=240,則biWidth '=240;如果biWidth=241,biWidth '=244)如果biCompression為BI_RGB,則該項可能為零
biXPelsPerMeter
指定目標設備的水平解析度,單位是每米的象素個數,關於解析度的概念,我們將在列印部分詳細介紹。
biYPelsPerMeter
指定目標設備的垂直解析度,單位同上。
biClrUsed
指定本圖象實際用到的顏色數,如果該值為零,則用到的顏色數為2的biBitCount次方。
biClrImportant
指定本圖象中重要的顏色數,如果該值為零,則認為所有的顏色都是重要的。
第三部分為調色板(Palette),當然,這里是對那些需要調色板的點陣圖文件而言的。有些點陣圖,如真彩色圖,前面已經講過,是不需要調色板的,BITMAPINFOHEADER後直接是點陣圖數據。
調色板實際上是一個數組,共有biClrUsed個元素(如果該值為零,則有2的biBitCount次方個元素)。數組中每個元素的類型是一個RGBQUAD結構,佔4個位元組,其定義如下:
typedef struct tagRGBQUAD{
BYTE rgbBlue; //該顏色的藍色分量
BYTE rgbGreen; //該顏色的綠色分量
BYTE rgbRed; //該顏色的紅色分量
BYTE rgbReserved; //保留值
} RGBQUAD;
第四部分就是實際的圖象數據了。對於用到調色板的點陣圖,圖象數據就是該像素顏在調色板中的索引值,對於真彩色圖,圖象數據就是實際的R,G,B值。下面就2色,16色,256色點陣圖和真彩色點陣圖分別介紹。
對於2色點陣圖,用1位就可以表示該像素的顏色(一般0表示黑,1表示白),所以一個位元組可以表示8個像素。
對於16色點陣圖,用4位可以表示一個像素的顏色,所以一個位元組可以表示2個像素。
對於256色點陣圖,一個位元組剛好可以表示1個像素。
對於真彩色圖,三個位元組才能表示1個像素,哇噻,好費空間呀,沒辦法,誰叫你想讓圖的顏色顯得更亮麗呢,有得必有失嘛。
要注意兩點:
1.每一行的位元組數必須是4的整倍數,如果不是,則需要補齊。這在前面介紹biSizeImage時已經提到了。
2.一般來說,.BMP文件的數據從下到上,從左到右的。也就是說,從文件中最先讀到的是圖象最下面一行的左邊第一個像素,然後是左邊第二個像素…接下來是倒數第二行左邊第一個像素,左邊第二個像素…依次類推,最後得到的是最上面一行的最右一個像素。

了解這些以後呢 可以通過以二進制的方式「rb」打開你想讀取的png圖片

FILE *fp
if(!(fp=open(「filename」,rb)))
printf(「open file error」);

打開成功後就可以通過文件指針讀取文件內容了。

㈦ 求一個c/c++處理png圖像的程序,要求把png圖像存儲入2維數組,加急!!謝謝

matlab挺方便的,幹嘛一定要用c/c++啊,你可以用matlab搞定啊

㈧ 怎麼縮小PNG圖片的大小

png也是應用最廣泛的圖片格式之一,它採用一種特殊的有損壓縮演算法,將不易被人眼察覺的圖像顏色刪除,從而達到較大的壓縮比(可達到2:1甚至40:1),所以「身材嬌小,容貌姣好」,特別受網路青睞。

a、打開任意瀏覽器,點擊瀏覽器的搜索框,在這里搜索圖片壓縮,選擇網頁搜索,我們要找到下載工具的網頁,將工具下載安裝到我們的電腦。

㈨ png是什麼格式

PNG格式

PNG是20世紀90年代中期開始開發的圖像文件存儲格式,其目的是企圖替代GIF和TIFF文件格式,同時增加一些GIF文件格式所不具備的特性。流式網路圖形格式(Portable Network Graphic Format,PNG)名稱來源於非官方的「PNG's Not GIF」,是一種點陣圖文件(bitmap file)存儲格式,讀成「ping」。PNG用來存儲灰度圖像時,灰度圖像的深度可多到16位,存儲彩色圖像時,彩色圖像的深度可多到48位,並且還可存儲多到16位的α通道數據。PNG使用從LZ77派生的無損數據壓縮演算法。
PNG文件格式保留GIF文件格式的下列特性:

使用彩色查找表或者叫做調色板可支持256種顏色的彩色圖像。
流式讀/寫性能(streamability):圖像文件格式允許連續讀出和寫入圖像數據,這個特性很適合於在通信過程中生成和顯示圖像。
逐次逼近顯示(progressive display):這種特性可使在通信鏈路上傳輸圖像文件的同時就在終端上顯示圖像,把整個輪廓顯示出來之後逐步顯示圖像的細節,也就是先用低解析度顯示圖像,然後逐步提高它的解析度。
透明性(transparency):這個性能可使圖像中某些部分不顯示出來,用來創建一些有特色的圖像。
輔助信息(ancillary information):這個特性可用來在圖像文件中存儲一些文本注釋信息。
獨立於計算機軟硬體環境。
使用無損壓縮。
PNG文件格式中要增加下列GIF文件格式所沒有的特性:

每個像素為48位的真彩色圖像。
每個像素為16位的灰度圖像。
可為灰度圖和真彩色圖添加α通道。
添加圖像的γ信息。
使用循環冗餘碼(cyclic rendancy code,CRC)檢測損害的文件。
加快圖像顯示的逐次逼近顯示方式。
標準的讀/寫工具包。
可在一個文件中存儲多幅圖像。

更多的詳細說明 請看 http://www.gameres.com/Articles/Program/Visual/Other/PNGFormat.htm

閱讀全文

與png壓縮c相關的資料

熱點內容
安卓手機粗字體怎麼設置 瀏覽:478
程序員需不需要眼鏡 瀏覽:545
經濟學pdf下載 瀏覽:748
程序員拿到offer復工 瀏覽:431
鏡像解壓一半自動斷電怎麼回事 瀏覽:985
程序員農村別墅價格 瀏覽:395
夢幻西遊網頁版通用伺服器是什麼 瀏覽:330
天天愛消除演算法 瀏覽:778
隱含模塊編譯 瀏覽:482
c語言尋路演算法 瀏覽:262
圖片背景分割python 瀏覽:537
程序員大數據專業有前途嗎 瀏覽:428
特徵融合演算法 瀏覽:403
安卓如何顯示關閉狀態 瀏覽:309
手機版雲文檔文件夾怎麼添加文件 瀏覽:359
安卓版俠盜獵車怎麼招小弟 瀏覽:763
官方小程序示例源碼 瀏覽:140
程序員努力視頻 瀏覽:683
程序員的愛情是什麼樣的 瀏覽:633
單片機太陽能追蹤器 瀏覽:853