导航:首页 > 文件处理 > 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相关的资料

热点内容
小米怎么调文件夹大小 浏览:335
程序员怒吼视频 浏览:810
加密货币的发展情况如何 浏览:71
java泛型编译原理 浏览:962
足球23关算法 浏览:736
我的世界手机基岩版为什么进不了服务器 浏览:732
阿里云服务器会被经常攻击吗 浏览:485
百度云app解压了在哪里 浏览:625
金立s10查看加密空间 浏览:863
自动分配ip地址是由什么服务器完成的 浏览:64
和多号app从哪里下载 浏览:346
u盘加密隐藏文件 浏览:775
编译原理中的句柄怎么找 浏览:611
程序员1年带800人跑山捡垃圾 浏览:921
小米手环5app怎么一直连手机 浏览:441
劳动力供给算法 浏览:396
ug编程在哪里可以调主题 浏览:289
计算机图形学算法流程图 浏览:575
java编程工资 浏览:126
oppo运营商app在哪里找 浏览:221