精华内容
下载资源
问答
  • 常用多媒体文件格式

    千次阅读 2016-05-27 17:28:20
    常用多媒体文件格式 图片格式 文件格式或后缀 描述 1 BMP Windows 位图 2 PCX PC 画笔 3 PNG 可移植网络图形 4 JPEG 联合摄影专家组 5 GIF 图形交换格式 6 ...

     

     

    常用多媒体文件格式
    图片格式文件格式或后缀描述
    1BMPWindows 位图 
    2PCXPC 画笔 
    3PNG可移植网络图形 
    4JPEG联合摄影专家组 
    5GIF图形交换格式 
    6TIFF标记图像文件格式 
    7DXFAutoCAD 绘图交换文件 
    8CGM计算机图形图元文件 
    9CDRCorelDRAW! 
    10WMFWindows 图元文件 
    11EPSEncapsulated PostScript 
    12EMF增强型图元文件 
    13PICTMacintosh 图片 
    视频格式文件格式或后缀描述
    1MPEG/MPG/DAT (运动图像专家组)是Motion Picture Experts Group 的缩写。这类格式包括了MPEG-1,MPEG-2和MPEG-4在内的多种视频格式。
    2AVI音频视频交错(Audio Video Interleaved)的英文缩写
    3MOVMac机的QuickTime支持的数字视频格式,基于Indeo压缩法
    4ASF(Advanced Streaming format高级流格式)。ASF 是MICROSOFT 为了和的Real player 竞争而发展出来的一种可以直接在网上观看视频节目的文件压缩格式。
    5WMV一种独立于编码方式的在Internet上实时传播多媒体的技术标准,Microsoft公司希望用其取代QuickTime之类的技术标准以及WAV、AVI之类的文件扩展名。
    6NAVIn AVI是New AVI 的缩写,是一个名为Shadow Realm 的地下组织发展起来的一种新视频格式。
    73GP一种3G流媒体的视频编码格式,主要是为了配合3G网络的高传输速度而开发的,也是目前手机中最为常见的一种视频格式。
    8REAL VIDEO(RA、RAM)格式由一开始就是定位在视频流应用方面的,也可以说是视频流技术的始创者。
    9MKV种后缀为MKV的视频文件频频出现在网络上,它可在一个文件中集成多条不同类型的音轨和字幕轨,而且其视频编码的自由度也非常大,可以是常见的DivX、XviD、3IVX,甚至可以是RealVideo、QuickTime、WMV 这类流式视频。实际上,它是一种全称为Matroska的新型多媒体封装格式
    10FLV是FLASH VIDEO的简称,FLV流媒体格式是一种新的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等缺点。
    11F4VF4V是Adobe公司为了迎接高清时代而推出继FLV格式后的支持H.264的F4V流媒体格式。它和FLV主要的区别在于,FLV格式采用的是H263编码,而F4V则支持H.264编码的高清晰视频,码率最高可达50Mbps。也就是说F4V和FLV在同等体积的前提下,能够实现更高的分辨率,并支持更高比特率,就是我们所说的更清晰更流畅。另外,很多主流媒体网站上下载的F4V文件后缀却为FLV,这是F4V格式的另一个特点,属正常现象,观看时可明显感觉到这种实为F4V的FLV有明显更高的清晰度和流畅度。
    12RMVBRMVB的前身为RM格式,它们是Real Networks公司所制定的音频视频压缩规范,根据不同的网络传输速率,而制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送和播放,具有体积小,画质也还不错的优点。
    13WebM由Google提出,是一个开放、免费的媒体文件格式。WebM 影片格式其实是以 Matroska(即 MKV)容器格式为基础开发的新容器格式,里面包括了 VP8 影片轨和 Ogg Vorbis 音轨,其中Google将其拥有的VP8视频编码技术以类似BSD授权开源,Ogg Vorbis 本来就是开放格式。 WebM标准的网络视频更加偏向于开源并且是基于HTML5标准的,WebM 项目旨在为对每个人都开放的网络开发高质量、开放的视频格式,其重点是解决视频服务这一核心的网络用户体验。Google 说 WebM 的格式相当有效率,应该可以在 netbook、tablet、手持式装置等上面顺畅地使用
    音频格式文件格式或后缀描述
    1CDCD格式的音质是比较高的音频格式。因此要讲音频格式,CD自然是打头阵的先锋。在大多数播放软件的“打开文件类型”中,都可以看到*.cda格式,这就是CD音轨了。标准CD格式也就是44.1K的采样频率,速率88K/秒,16位量化位数,因为CD音轨可以说是近似无损的,因此它的声音基本上是忠于原声的,因此如果你是一个音响发烧友的话,CD是你的首选。
    2WAVE(*.WAV)是微软公司开发的一种声音文件格式,它符合PIFFResource Interchange File Format 文件规范,用于保存WINDOWS平台的音频信息资源,被WINDOWS平台及其应用程序所支持。
    3AIFF(Audio Interchange File Format)格式和AU格式,它们都和WAV非常相像,在大多数的音频编辑软件中也都支持它们这几种常见的音乐格式。AIFF是音频交换文件格式的英文缩写。是APPLE公司开发的一种音频文件格式,被MACINTOSH平台及其应用程序所支持,NETSCAPE浏览器中LIVEAUDIO也支持AIFF格式。所以大家都不常见。AIFF是Apple苹果电脑上面的标准音频格式,属于QuickTime技术的一部分。
    4AUAUDIO文件是SUN公司推出的一种数字音频格式。AU文件原先是UNIX操作系统下的数字声音文件。由于早期INTERNET上的WEB服务器主要是基于UNIX的,所以,AU格式的文件在如今的INTERNET中也是常用的声音文件格式。
    5MPEGMPEG是动态图象专家组的英文缩写。这个专家组始建于1988年,专门负责为CD建立视频和音频压缩标准。MPEG音频文件指的是MPEG标准中的声音部分即MPEG音频层。目前INTERNET上的音乐格式以MP3最为常见。虽然它是一种有损压缩,但是它的最大优势是以极小的声音失真换来了较高的压缩比。MPEG含有格式包括:MPEG-1、MPEG-2、MPEG-Layer3、MPEG-4
    6MP3MP3格式诞生于八十年代的德国,所谓的MP3也就是指的是MPEG标准中的音频部分,也就是MPEG音频层。根据压缩质量和编码处理的不同分为3层,分别对应“*.mp1"/“*.mp2”/“*.mp3”这3种声音文件。需要提醒大家注意的地方是:MPEG音频文件的压缩是一种有损压缩,MPEG3音频编码具有10:1~12:1的高压缩率,同时基本保持低音频部分不失真,但是牺牲了声音文件中12KHz到16KHz高音频这部分的质量来换取文件的尺寸,相同长度的音乐文件,用*.mp3格式来储存,一般只有*.wav文件的1/10,因而音质要次于CD格式或WAV格式的声音文件。由于其文件尺寸小,音质好;所以在它问世之初还没有什么别的音频格式可以与之匹敌,因而为*.mp3格式的发展提供了良好的条件。
    7MPEG-4是由国际运动图像专家组于2000年10月公布的一种面向多媒体应用的视频压缩标准。它采用了基于对象的压缩编码技术,在编码前首先对视频序列进行分析,从原始图像中分割出各个视频对象,然后再分别对每个视频对象的形状信息、运动信息、纹理信息单独编码,并通过比MPEG-2更优的运动预测和运动补偿来去除连续帧之间的时间冗余。
    8MIDI(Musical Instrument Digital Interface)格式被经常玩音乐的人使用,MIDI允许数字合成器和其他设备交换数据。MID文件格式由MIDI继承而来。MID文件并不是一段录制好的声音,而是记录声音的信息,然后再告诉声卡如何再现音乐的一组指令。这样一个MIDI文件每存1分钟的音乐只用大约5~10KB。MID文件主要用于原始乐器作品,流行歌曲的业余表演,游戏音轨以及电子贺卡等。
    9WMA (Windows Media Audio) 格式是来自于微软的重量级选手,后台强硬,音质要强于MP3格式,更远胜于RA格式,它和日本YAMAHA公司开发的VQF格式一样,是以减少数据流量但保持音质的方法来达到比MP3压缩率更高的目的,WMA的压缩率一般都可以达到1:18左右,WMA的另一个优点是内容提供商可以通过DRM(Digital Rights Management)方案如Windows Media Rights Manager 7加入防拷贝保护。
    10RealAudio主要适用于在网络上的在线音乐欣赏,现在大多数的用户仍然在使用56Kbps或更低速率的Modem,所以典型的回放并非最好的音质。有的下载站点会提示你根据你的Modem速率选择最佳的Real文件。real的的文件格式主要有这么几种:有RA(RealAudio)、RM(RealMedia,RealAudio G2)、RMX(RealAudio Secured),还有更多。这些格式的特点是可以随网络带宽的不同而改变声音的质量,在保证大多数人听到流畅声音的前提下,令带宽较富裕的听众获得较好的音质。
    11VQF雅马哈公司另一种格式是*.vqf,它的核心是减少数据流量但保持音质的方法来达到更高的压缩比,VQF的音频压缩率比标准的MPEG音频压缩率高出近一倍,可以达到18:1左右甚至更高。也就是说把一首4分钟的歌曲(WAV文件)压成MP3,大约需要4MB左右的硬盘空间,而同一首歌曲,如果使用VQF音频压缩技术的话,那只需要2MB左右的硬盘空间。
    12OggVorbis是一种新的音频压缩格式,类似于MP3等现有的音乐格式。但有一点不同的是,它是完全免费、开放和没有专利限制的。Vorbis是这种音频压缩机制的名字,而Ogg则是一个计划的名字,该计划意图设计一个完全开放性的多媒体系统。目前该计划只实现了OggVorbis这一部分。
    13AMR全称Adaptive Multi-Rate,自适应多速率编码,主要用于移动设备的音频,压缩比比较大,但相对其他的压缩格式质量比较差,由于多用于人声,通话,效果还是很不错的。

     

    展开全文
  • 常见图片格式详解

    2021-05-27 07:42:11
    做了几年有关图形、图像的工作,对图片格式算是小有经验,在此写成一文章总结下。虽然一开始并不想讲很理论的东西,但写完后发现几乎全是理论,细想一下关于图片格式的知识本身就是理论的东西,囧~~ 那就力求用最...

    做了几年有关图形、图像的工作,对图片格式算是小有经验,在此写成一文章总结下。虽然一开始并不想讲很理论的东西,但写完后发现几乎全是理论,细想一下关于图片格式的知识本身就是理论的东西,囧~~ 那就力求用最简单的方式将这些“理论”讲清楚吧。

    常见的图片格式有bmp, jpg(jpeg), png, gif, webp等。图像基本数据结构

    要讲图片格式还先得从图像的基本数据结构说起。在计算机中, 图像是由一个个像素点组成,像素点就是颜色点,而颜色最简单的方式就是用RGB或RGBA表示, 如图所示

    68805914_1

    (图1)

    68805914_2

    (图2)

    如果有A通道就表明这个图像可以有透明效果。

    R,G,B每个分量一般是用一个字节(8位)来表示,所以图(1)中每个像素大小就是3*8=24位图, 而图(2)中每个像素大小是4*8=32位。

    这里有三点需要说明:一、图像y方向正立或倒立图像是二维数据,数据在内存中只能一维存储,二维转一维有不同的对应方式。比较常见的只有两种方式: 按像素“行排列”从上往下或者从下往上。

    68805914_3

    如图所示的图像有9个像素点,如果从上往下排列成一维数据是(123456789), 如果是从下往上排列则为(789456123)。 只所以会有这种区别是因为,前一种是以计算机图形学的屏幕坐标系为参考(右上为原点,y轴向下 ),而另后一种是以标准的数学坐标系为参考(右下为原点,y轴向上)。这两个坐标系只是y值不一样,互相转换的公式为:

    y2 = height-1-y1

    y1,y2分别为像素在两个坐标系中的y坐标,height为图像的高度。

    不过好像只有bmp图片格式以及windows下的GDI,GDI+是从下往上排列,其它比如DirectX,OpenGL,Cocoa(NSImage, UIImage),OpenCV等都是从上往下排列。二、RGB排列顺序

    不同图形库中每个像素点中RGBA的排序顺序可能不一样。上面说过像素一般会有RGB,或RGBA四个分量,那么在内存中RGB的排列就有6种情况,如下:

    RGBA的排列有24种情况,这里就不全部列出来了。不过一般只会有RGB,BGR, RGBA, RGBA, BGRA这几种排列据。 绝大多数图形库或环境是BGR/BGRA排列,cocoa中的NSImage或UIImage是RGBA排列。三、像素32位对齐

    如果是RGB24位图,会存在一个32位对齐的问题——

    在x86体系下,cpu一次处理32整数倍的数据会更快,图像处理中经常会按行为单位来处理像素。24位图,宽度不是4的倍数时,其行字节数将不是32整数倍。这时可以采取在行尾添加冗余数据的方式,使其行字节数为32的倍数。

    比如,如果图像宽为5像素,不做32位对齐的话,其行字节数为24*5=120,120不是32的倍数。是32整数倍并且刚好比120大的数是128,也就只需要在其行尾添加1字节(8位)的冗余数据即可。(一个以空间换时间的例子)

    有个公式可以轻松计算出32位对齐后每行应该占的字节数

    byteNum = ((width * 24 + 31) & ~31)>>3;

    注意结果是字节数,如果想知道位数,还得x8图片格式的必要性

    如果将图像原始格式直接存储到文件中将会非常大,比如一个5000*5000 24位图,所占文件大小为5000*5000*3字节=71.5MB, 其大小非常可观。

    如果用zip或rar之类的通用算法来压缩像素数据,得到的压缩比例通常不会太高,因为这些压缩算法没有针对图像数据结构进行特殊处理。

    于是就有了jpeg,png等格式,同样是图像压缩算法jpeg和png也有不同的适用场景,具体在下文再阐述。

    68805914_4

    所以可以总结如下: jpeg,png文件之于图像,就相当于zip,rar格式之于普通文件(用zip,rar格式对普通文件进行压缩)。BMP格式

    bmp格式没有压缩像素格式,存储在文件中时先有文件头、再图像头、后面就都是像素数据了,上下颠倒存储。

    用windows自带的mspaint工具保存bmp格式时,可以发现有四种bmp可供选择:

    单色: 一个像素只占一位,要么是0,要么是1,所以只能存储黑白信息

    16色位图: 一个像素4位,有16种颜色可选

    256色位图: 一个像素8位,有256种颜色可选

    24位位图: 就是图(1)所示的位图,颜色可有2^24种可选,对于人眼来说完全足够了。

    这里为了简单起见,只详细讨论最常见的24位图的bmp格式。

    现在来看其文件头和图片格式头的结构:

    文件头信息

    字段大小(字节)描述

    bfType2一定为19778,其转化为十六进制为0x4d42,对应的字符串为BM

    bfSize4文件大小

    bfReserved12一般为0

    bfReserved22一般为0

    bfOffBits4从文件开始处到像素数据的偏移,也就是这两个结构体大小之和

    bmp图片结构头

    字段大小(字节)描述

    biSize4此结构体的大小

    biWidth4图像的宽

    biHeight4图像的高

    biPlanes2图像的帧数,一般为1

    biBitCount2一像素所占的位数,一般是24

    biCompression4一般为0

    biSizeImage4像素数据所占大小,即上面结构体中文件大小减去偏移(bfSize-bfOffBits)

    biXPelsPerMeter4一般为0

    biXPelsPerMeter4一般为0

    biClrUsed4一般为0

    biClrImportant4一般为0

    本来在windows平台下wingdi.h文件中已经有这些结构的定义,不过为了不依赖与windows,实现为跨平台,本人将wingdi.h中的这两个结构“偷用”出来了。代码如下:1 //bmp文件头2 #pragma pack(push)3 #pragma pack(2)4 typedef struct tagBITMAPFILEHEADER {5 unsigned short bfType; // 19778,必须是BM字符串,对应的十六进制为0x4d42,十进制为197786 unsigned int bfSize; // 文件大小7 unsigned short bfReserved1; // 08 unsigned short bfReserved2; // 09 unsigned int bfOffBits; // 从文件头到像素数据的偏移,也就是这两个结构体的大小之和10 } BITMAPFILEHEADER;11 #pragma pack(pop)1213 //bmp图像头14 typedef struct tagBITMAPINFOHEADER {15 unsigned int biSize; // 此结构体的大小16 int biWidth; // 图像的宽17 int biHeight; // 图像的高18 unsigned short biPlanes; // 119 unsigned short biBitCount; // 2420 unsigned int biCompression; // 021 unsigned int biSizeImage; // 像素数据所占大小, 这个值应该等于上面文件头结构中bfSize-bfOffBits22 int biXPelsPerMeter; // 023 int biYPelsPerMeter; // 024 unsigned int biClrUsed; // 025 unsigned int biClrImportant;// 026 } BITMAPINFOHEADER;

    Bmp结构体

    由于bmp格式比较简单,本人已实现了一份简单的c++代码,具有读取、保存bmp图片的功能,只支持24位的bmp格式。

    代码在 http://git.oschina.net/xiangism/blogData 的“常见图片格式详解/ImageDemo/BmpDemo”文件夹中。

    虽然这里只建立了vs2008项目,但代码在linux, mac平台下都可以编译通过。

    需要说明的是为了统一处理,将bmp读取到LBitmap::m_pixel中时就将其转化为32位从上往下排列的图像格式了。并且会有y坐标的转化。所以在读取的时候会有一个temp_line先存储文件中的24位数据,再转化为32位数据。在保存时也是先将32位数据转化到temp_line的24位数据上,然后再写入文件。(如果仅仅是处理bmp,那么这么多的一个A通道是冗余数据,但后面处理png图片时就会用到这个A通道)

    如果用上面的代码来读取如图所示的图片(放大8倍后的显示图):

    68805914_5

    右上角像素为RGB(255, 128, 0)1 ln::LBitmap bmp;2 bmp.ReadBmp(L'one.bmp');3 unsigned char *p = bmp.Pixel(0, 0);4 printf('%d, %d, %d\n', p[0], p[1], p[2]); //显示左上角的像素值5 bmp.WriteBmp(L'out.bmp'); //保存到文件,可以测试是否能正确读取和保存bmp

    运行的结果为: 0,128,255可以看出像素分布为BGR

    ps:bmp格式也是可以压缩.

    bmp格式也可以有颜色板。颜色板就是一个颜色的索引,上面说过bmp格式一个像素可以只有2个,16个或256个取值。就拿单色位图来说明,默认为0对应RGB(0,0,0) 1,对应RGB(255, 255, 255)如果颜色板这样定义:0对应 RGB(255,0, 0)红1对应 RGB(0, 255, 0)绿这样黑白图就成了红绿图JPEG格式jpeg是有损压缩格式, 将像素信息用jpeg保存成文件再读取出来,其中某些像素值会有少许变化。在保存时有个质量参数可在[0,100]之间选择,参数越大图片就越保真,但图片的体积也就越大。一般情况下选择70或80就足够了。

    jpeg没有透明信息。

    jpeg比较适合用来存储相机拍出来的照片,这类图像用jpeg压缩后的体积比较小。其使用的具体算法核心是离散余弦变换、Huffman编码、算术编码等技术,有兴趣的同学可以在网上找一大堆资料,本文就不详细介绍了。

    接下来要介绍一个有关jpeg非常实用的技术——

    jpeg格式支持不完全读取整张图片,即可以选择读取原图、1/2、1/4、1/8大小的图片

    比如5000*5000的一张大图,可以只读取将其缩小成1/8后即625*625大小的图片。 这样比先完全读取5000*5000的图像,再用算法缩小成625*625大小不知快多少倍。

    如果应用需求只需要一张小图时,这种读取方式就可以大显身手了。

    在c代码中读取jpeg一般是使用libjpeg, 这个库提供了不完全读取图片的功能。

    给ln::LBitmap添加有关jpeg的接口,如下ReadJpeg第三个参数fraction可取值为1,2,4,8,分别对应1/1,1/2,1/4,1/8```在上面LBitmap的基本上加入下面5个函数:// 不读取像素数据,只读取jpeg文件的大小, 用指针*width, *height做为传出参数, 返回值bool返回文件是否为jpeg格式static bool ReadJpegSize(const wchar_t *path, int *width, int *height);// 判断文件是否为jpeg格式static bool IsJpegFile(const wchar_t *fileame);// 读取jpeg,fraction可取值为1, 2, 4, 8bool ReadJpeg(const wchar_t *filename, int fraction = 1);// 按照width, height的大小读取合适的jpeg大小, 所得的图像大小不会超过width*heightbool ReadFitJpeg(const wchar_t *filename, int width, int height);// 保存jpeg,quality范围是[0, 100]bool WriteJpeg(const wchar_t *filename, int quality = 80);```

    JpegAPI

    具体的实现在JpegDemo用上面的函数进行jpeg的读取和保存的测试```ln::LBitmap bmp;bmp.ReadBmp(L'one.bmp');unsigned char *p = bmp.Pixel(0, 0);printf('%d, %d, %d\n', p[0], p[1], p[2]);bmp.WriteJpeg(L'one.jpg', 90);```

    读取one.bmp图片,然后保存成jpeg格式,one.jpg放大后显示如下

    68805914_6

    发现左上角的颜色发生了变化,并且也影响到周围的像素,就算将上面WriteJpeg第二个参数换成100,也还是这种效果,这是Jpeg格式无法避免的问题但如果读取一张风景照,再保存成Jpeg,就几乎看不出有什么差别了。android平台下实现jpeg预读BitmapFactory.Options opt = new BitmapFactory.Options;opt.inJustDecodeBounds = true;BitmapFactory.decodeFile(info.fullPath, opt); //这里仅仅只读取jpeg的大小opt.inJustDecodeBounds = false;if (opt.outWidth > opt.outHeight) {opt.inSampleSize = opt.outWidth / phSize;//hpSize是允许的图片宽高的最大值} else {opt.inSampleSize = opt.outHeight / phSize;}Bitmap b = BitmapFactory.decodeFile(info.fullPath, opt);

    将BitmapFactory.Options的inJustDecodeBounds 设置为true后,就只会读取Jpeg的大小,而不会去解析像素数据。然后再设置inSampleSize后,就可以根据这个值来读取适当大小的图片,研究android的源码后可以发现底层也是调用的libjpeg库来实现。ios,mac

    本人还没有在ios/mac中发现如何预读jpeg的官方API。Apple对图形、图像、多媒体领域提供了丰富接口,如果这个功能真没实现就太令我惊讶了! 不过ObjectC完全兼容C,可以调用libjpeg库来实现这个功能。.NET下仅读取jpeg的大小

    下面是用c#仅仅读取jpeg宽高(没有解析像素数据), 直接用C#读取1/2,1/4,1/8还不知道如何实现FileStream stream = new FileStream(path, FileMode.Open);Image img = Image.FromStream(stream, false, false); //关键是将第三个参数设置为falseConsole.WriteLine('size: {0},{1}', img.Width, img.Height);jpeg批量转化工具

    用相机拍出来的原始jpeg图片是高保真质量, 所占文件体积非常大,本人写了一个批量转化的工具,可以将jpeg的质量都转化成80, 图像的宽高不变, 这时人眼几乎看不出有什么差别, 但其体积只有原来的1/3. 如果有大量的照片需要保存时, 节约的空间就很客观了。实现原理很简单, 就是读取jpeg文件, 然后再保存. 用c#实现的,代码量非常少,在此贴出全部源码1 class Program2 {3 static string src_path;4 static long small_size = 0;56 private static ImageCodecInfo GetCodecInfo(string mimeType)7 {8 ImageCodecInfo CodecInfo = ImageCodecInfo.GetImageEncoders;910 foreach (ImageCodecInfo ici in CodecInfo) {11 if (ici.MimeType == mimeType)12 return ici;13 }14 return null;15 }1617 static void SaveImage(string path)18 {19 FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);2021 if (stream.Length == 0) {22 stream.Close;23 return;24 }2526 byte file_data = new byte[stream.Length];27 stream.Read(file_data, 0, (int)stream.Length);28 Stream mem = new MemoryStream(file_data);2930 long old_size = stream.Length;3132 try {33 Image img = new Bitmap(mem);34 stream.Close;3536 EncoderParameter p = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 80L);37 EncoderParameters ps = new EncoderParameters(1);3839 ps.Param[0] = p;4041 img.Save(path, GetCodecInfo('image/jpeg'), ps);4243 FileStream f = new FileStream(path, FileMode.Open, FileAccess.Read);44 long new_size = f.Length;45 f.Close;4647 small_size += old_size - new_size;4849 } catch (System.Exception ex) {5051 } finally {52 stream.Close;53 }5455 }5657 static void ConvertOneImage(string path, bool is_save)58 {59 if (is_save) {60 string new_name = src_path + path.Substring(path.LastIndexOf('\\'));61 File.Copy(path, new_name, true);62 }6364 SaveImage(path);65 }6667 static void ShowSize(string path)68 {69 FileStream stream = new FileStream(path, FileMode.Open);70 Image img = Image.FromStream(stream, false, false);71 stream.Close;72 //Console.WriteLine('{0} {1}', img.Width, img.Height);73 if (img.Width == 0) {74 Console.WriteLine('Error');75 }76 }7778 static void BatchJpeg79 {80 string path = Application.ExecutablePath;81 path = path.Substring(0, path.LastIndexOf('\\'));8283 src_path = path + '\\' + 'src';84 //Console.WriteLine(src_path);8586 Console.WriteLine('批量转化jpeg图片,保证其图片质量的前提下减少其存储大小');87 Console.WriteLine('若想保存原图片,其按y(原图将放在src文件夹下), 否则按任意键开始处理');8889 ConsoleKeyInfo key = Console.ReadKey;90 bool is_save = false;9192 if (key.KeyChar == 'y' || key.KeyChar == 'Y') {93 is_save = true;9495 Directory.CreateDirectory('src');96 }9798 string files = Directory.GetFiles(path, '*.jpg');99100 Stopwatch sw = new Stopwatch;101 sw.Start;102103 for (int i = 0; i < files.length;="" ++i)="" {104="" convertoneimage(files[i],="" is_save);105="" string="" s="files[i].Substring(files[i].LastIndexOf('\\')" +="" 1);106="" console.writeline((i="" +="" 1).tostring="" +="" '/'="" +="" files.length.tostring="" +="" '="" \t="" '="" +="" s);107108="" showsize(files[i]);109="" }110111="" sw.stop;112113="" console.writeline('*********已结束,按任意键结束********');114="" double="" v="(small_size" *="" 1.0="" (1024="" *="" 1024));115116="" console.writeline('共减少="" '="" +="" v.tostring('0.00##')="" +="" 'm="" 的存储空间');117="" console.writeline('耗时:'="" +="" sw.elapsed.totalseconds.tostring('0.00##')="" +="" '秒');118="" console.readkey;119="" }120121="" static="" void="" main(string[]="" args)122="" {123="" batchjpeg;124="" saveimage('e:\\img="" -="" 副本.jpg');125="" string="" path='E:\\cpp_app\\LiteTools\\JpegBatch\\bin\\Release\\img - 副本.JPG' ;126="" file.delete(path);127="" }128="">

    JpegBatchConvertExif信息

    另外jpeg文件一般有一个附属的exif信息,这个信息中有图像大小,拍摄时间,拍摄的相关参数,照片方向,图像缩略图等信息。

    用相机拍出来的jpeg都会有这个信息。如果照片方向不是正立的话,在读取到像素取后,还得按exif所指明的方向将图像旋转下。mspaint程序就没有做这个处理,有些图片用picasa查看和用mspaint查看方向就不一样。当然为了简单起见,上面的LBitmap中也自动忽略了exif信息及其图像拍摄时的方向。

    如果不用读取1/2,1/4,1/8的方法,也可以从exif中来读取缩略图,但这个缩略图一般很小。

    说到exif,不得不说一款用perl实现的命令行工具:exiftool。几乎所有的多媒体文件(图像、音乐、视频)都可以用这个工具来查看其有关信息,当然如果不是jpeg文件就是指广义上的'exif'。在git中有已经编译好可执行文件exiftool.exe。使用方法是将这个文件放到系统路径下,然后在想查看的文件路径下执行 exiftool filename

    在实现BatchJpeg工具时如果仅仅用上面实现的LBitmap来读取,保存, 将会失去exif信息, 而相片的拍摄时间等信息又很重要, 所以还得用另一个库exiv2来读取写入exif。如果用c#, 用上面的代码exif信息会自动保留下来。默默地向c#致敬。intelJpeg库

    如果在win32环境下对jpeg IO速度有很高的要求,可以使用interlJpeg库,不开源,但提供有*.h,*.lib文件。这个库可以大大提高jpg读取、保存速度。

    当时分别用c#和c实现了jpeg批量转化工具, 在处理大量图片时发现c#用时居然只有c的一半。太奇怪了,按理说,c的速度比c#应该快才对啊, 而实事是c慢了这么多。 最后发现问题就在libjpeg上,用了intetJpeg后速度就和c#差不多了(猜想.NET内部也是用intelJpeg来处理jpeg)。PNG格式png是一种无损压缩格式, 压缩大概是用行程编码算法。

    png可以有透明效果。

    png比较适合适量图,几何图。 比如本文中出现的这些图都是用png保存,比用joeg保存体积要小。

    再强调一下: jpeg比较适合存储色彩“杂乱”的拍摄图片,png比较适合存储方几何特征比较强的矢量图。

    png可能有24位图和32位图之分。32位图就是带有alpha通道的图片。

    将图片a绘制到另一幅图片b上,如果图片a没有alpha通道,那么就会完全将b图片的像素给替换掉。而如果有alpha通道,那么最后覆盖的结果值将是c = a*alpha + b*(1-alpha)

    再对LBitmap添加png的支持。

    添加接口如下:static bool ReadPngSize(const wchar_t *path, int *width, int *height);static bool IsPngFile(const wchar_t *filename);bool ReadPng(const wchar_t *filename);bool WritePng(const wchar_t *filename);

    具体实现在PngDemo中。有调用libpng库,并且libpng库依赖zlib库(由此可以看出png算法有用到常规的压缩算法)。GIF格式

    上面提到的bmp,jpeg,png图片都只有一帧,而gif可以保存多帧图像,如图所示

    68805914_7

    libgif库可以用来读取gif图片。gif中有个参数可以控制图片变化的快慢。在程序中可以使用这个参数,也可以自己定义一个参数,这就是为什么gif图片,在不同程序中查看时其变化速度不一样。webp

    google开发的一种有损、透明图片格式,相当于jpeg和png的合体,google声称其可以把图片大小减少40%。一个强大的格式库,CxImage

    CxImage几乎可以读取任何图片格式

    下面是其头文件中的宏定义:#define CXIMAGE_SUPPORT_WINDOWS 1#define CXIMAGE_SUPPORT_EXIF 1#define CXIMAGE_SUPPORT_BMP 1#define CXIMAGE_SUPPORT_GIF 1#define CXIMAGE_SUPPORT_JPG 1#define CXIMAGE_SUPPORT_PNG 1#define CXIMAGE_SUPPORT_ICO 1#define CXIMAGE_SUPPORT_TIF 1#define CXIMAGE_SUPPORT_TGA 1#define CXIMAGE_SUPPORT_PCX 1#define CXIMAGE_SUPPORT_WBMP 1#define CXIMAGE_SUPPORT_WMF 1#define CXIMAGE_SUPPORT_JP2 1#define CXIMAGE_SUPPORT_JPC 1#define CXIMAGE_SUPPORT_PGX 1#define CXIMAGE_SUPPORT_PNM 1#define CXIMAGE_SUPPORT_RAS 1#define CXIMAGE_SUPPORT_MNG 1#define CXIMAGE_SUPPORT_SKA 1#define CXIMAGE_SUPPORT_RAW 1#define CXIMAGE_SUPPORT_PSD 1

    CxImage在针对特定格式时,也是调用了其它图片库(比如libjpeg, libpng, libtiff)。由于CxImage太过庞大,如果不想使用其全部代码,可以自己从中“偷取”特定图片格式的读取、保存代码。

    展开全文
  • 常用多媒体设备接口有哪些?

    千次阅读 2021-07-28 02:01:06
    常用多媒体设备接口有哪些?一、多媒体设备接口一般有:1、RCA 插口 (白色=左声道、红色=右声道、黄色=影像讯号端口):俗称梅花头、莲花头,是一种应用广泛的端子,可以应用的场合包括了模拟视频/音频(例:AV端子...

    常用的多媒体设备接口有哪些?

    一、多媒体设备接口一般有:

    fccd4f68ebd7f765fd25a095267bca23.png

    1、RCA 插口 (白色=左声道、红色=右声道、黄色=影像讯号端口):俗称梅花头、莲花头,是一种应用广泛的端子,可以应用的场合包括了模拟视频/音频(例:AV端子(三色线))、数字音频(例:S/PDIF)与色差分量(例:色差端子)传输等。

    2、S-Video 视频接口:又称亮色分离端子,是一种专业视频标准接口,只传输视频信号,与音频无关。

    334af523c2786b387d63e6cf581e4144.png

    3、3.5mm 音频输入接口:3.5毫米的音频接口是较常见的音频接口之一。跟所有的音频接口一样,它都是分公头和母头的。

    4、VGA 插口:即视频图形阵列,具有分辨率高、显示速率快、颜色丰富等优点。VGA接口不但是CRT显示设备的标准接口,同样也是LcD液晶显示设备的标准接口,具有广泛的应用范围。VGA(视频图形阵列)作为一种标准的显示接口在视频和计算机领域得到了广泛的应用u,在图像处理中若是采用传统的数据传输方式来使高分辨率图像实时显示在显示器上。

    723543e1e80685db1182261a930f3b4e.png

    5、HDMI 高清晰多媒体接口:是一种全数字化视频和声音发送接口,可以发送未压缩的音频及视频信号。HDMI可以同时发送音频和视频信号,由于音频和视频信号采用同一条线材,大大简化系统线路的安装难度。

    6、可提供 5 volt 电流的 USB 端:是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口

    7、多功能电源插口:提供外接电源

    bc9e196c4d8343040b66df02a1201d81.png

    8、RJ45 网络插口:常见的RJ45接口有两类:用于以太网网卡、路由器以太网接口等的DTE(数据终端设备)类型和用于交换机等的DCE(数字通信设备)类型。

    9、打印机接口:用来连接各种打印机,包括普通打印机、激光打印机、彩色打印机等,打印机现在已经是较常用的多媒体输出设备之一了。

    b115a2114f9569f91d1b30f0ea5aef02.png

    10、交互控制接口:它是用来连接触摸屏、鼠标、光笔等人机交互设备的,这些设备将大大方便用户对MPC的使用。

    11、网络接口:是实现多媒体通信的重要MPC扩充部件。计算机和通信技术相结合的时代已经来临,这就需要专门的多媒体外部设备将数据量庞大的多媒体信息传送出去或接收进来,通过网络接口相接的设备包括视频电话机、传真机、LAN和ISDN等。

    fe4ae6fb14c26ec7eb15f7a9695e214b.png

    二、常用的多媒体设备有:

    1、输入设备

    键盘、红外遥感器、鼠标器、触摸屏、图像扫描仪、数字化仪、图形面板、磁卡编码和读入器、声音识别系统、数字照相机。

    2、输出设备

    视频设备、音频设备、显示器、打印机、绘图仪。

    3、通讯设备

    调至调节器(通常我们叫猫 MODEMS)、网络。

    展开全文
  • 常用的图像文件格式

    千次阅读 2021-07-27 00:13:36
    常用的图像文件格式介绍常用的图像文件格式图像的文件格式决定了图像数据的存储内容和存储方式,以及文件是否与一些应用程序兼容,另外还涉及到如何与其他程序交换数据等。我们现在来列举一些常用的图像文件格式,如...

    常用的图像文件格式介绍

    常用的图像文件格式

    图像的文件格式决定了图像数据的存储内容和存储方式,以及文件是否与一些应用程序兼容,另外还涉及到如何与其他程序交换数据等。我们现在来列举一些常用的图像文件格式,如以下:

    1. PSD格式:是由Photoshop生成的默认的文件格式,它支持Photoshop所有的特性,可以保存图层、通道和任何一种颜色模式。

    2.JPEG格式:是应用最广泛的一种可跨平台操作的压缩格式文件,最大特点是压缩性很强。

    3.TIFF格式:是一种通用的文件格式,用于在应用程序和计算机平台之间交换文件,几乎所有的绘画、图像编辑和页面排版程序都支持这个格式。

    4.GIF格式:是一种用LZW压缩的格式,可以减小文件的大小,减少传输的时间。 5.PDF格式:是一种灵活的、跨平台、跨应用程序的文件格式,主要用于网上出版。

    6.BMP(Windows Bitmap)格式:是Microsoft开发一种Windows下的标准图像文件格式,这种格式

    被大多数软件所支持。

    7.TGA格式:是计算机上应用最广泛的图象文件格式,支持32位图像色彩,可以保存Alpha通道信息。

    这些格式在平面设计 /修复照片 /网页制作 /效果图后期修饰 /影像创意 /界面设计 /多媒体课件制作/图像处理/图形编辑/广告印刷/网页设计等都运用广泛.

    展开全文
  • 主要功能:图片微调、滤镜美容、添加饰品模板、边框场景等 主要特点:操作简单,无需专业基础,软件下载方便,完全免费,满足日常需求。 2、光影魔术手 使用难度:容易 主要功能:人像美容、抠图、组合图制作、数字...
  • 原标题:在多媒体计算机中常见的图像输入设备是?输入设备 向计算机输入数据和信息的设备。是计算机与用户或其他设备通信的桥梁。输入设备是用户和计算机系统之间进行信息交换的主要装置之一.键盘,鼠标,摄像头,扫描...
  • 网页制作中图片格式常用三种格式(jpg,png,gif)1jpg图片是我们最常见的。jpg:可压缩的,有损图片质量的格式。虽然可压缩,它的色彩还是比较丰富。特点:文件小、色彩丰富。在网页中常用。劣势:不能保存透明背景...
  • } } 播放声音 Java语言老根据地的音频格式有多种:au、aiff、wav、midi、rfm等。小程序要播放音频文件,可使用类AudioClip,该类在java.applet.AudioClip类库中定义。小程序先创建AudioClip对象,并用getAudioClip()...
  • 1. 从相册载入图片 类似的,首先添加清单文件中的权限: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_...
  • poster 属性——封面图片URL。 preload 属性——规定是否在页面加载后载入视频。如果设置了 autoplay 属性,则忽略该属性。(auto - 当页面加载后载入整个视频、meta - 当页面加载后只载入元数据、none - 当页...
  • 背景随着近年来车内多媒体设备从无屏向有屏的发展,市场上出现了各种形状、尺寸和分辨率的车机屏幕,其丰富程度远远超过Android适配的手机屏幕。高德车载导航过去采用的多套UI 图片资源,通过拉伸、缩小来适应各种车...
  • 多媒体信息处理技术

    2021-07-29 00:10:16
    1、第,5,章,多媒体信息处理技术,主讲教师:张艳珍,本章主要介绍多媒体信息处理技术的基础,知识和基本概念,着重讲述多媒体计算机系统结,构、多媒体图形图像、声音、动画的基础知识,主要要点,继续,1,了解媒体与多媒体...
  • 电脑会考 ++多媒体 = 多种媒体(文本、图形、图像、声音、动画和视频等) 多媒体技术:计算机综合处理文字、图形、图像、音频、视频等多媒体信息,使多种信息建立逻辑连接,集成为一个系统并且具有交互性的一门综合性...
  • 目前办公室和家庭最常用的是多媒体通用微型计算机1981年,IBM公示推出了划时代的个人计算机--IBM pc计算机硬件结构也称为冯.诺依曼结构计算机硬件组成:控制器、存储器、运算器、输出设备、输入设备运算器和控制器合...
  • 巧妇难为无米之炊,其实...1、图片文件图片文件我们一般可以通过扫描仪、数码相机和截屏软件来抓取。(1)扫描仪、数码相机通过扫描仪获取时,我们先把扫描仪的驱动程序安装好,然后就可以使用相应的程序来扫描成图...
  • HTML——图片多媒体

    2021-04-25 14:56:10
    常用图片格式: JPEG,格式最大可支持32位色彩,JPEG的文件格式一般又两种文件扩展名:“.jpg”,“jpeg”。 GIF,最高支持8位色彩,分为GIF87a和GIF89a两种类型。 PNG是Web图像中通用的格式,是一种无损压缩格式,...
  • 使用的媒体包括文字、图片、照片、声音 、动画和影片,以及程式所提供的互动功能。多媒体是超媒体(Hypermedia)系统中的一个子集,而超媒体系统是使用超链接(Hyperlink)构成的全球信息系统,全球信息系统是因特网上...
  • 音视频常用的封装格式 格式 全名 开发商 初版年限 特点 MP4 MP4 Moving Picture Exoerts Group即MPEG(动态图像专家组) 1990 常用有损压缩格式,通用性强 AVL Audio Video interleaved(音视频交错格式) ...
  • 13904.jpg (35.69 KB)2011-6-23 15:08格式工厂(FormatFactory)是套万能的免费的多媒体格式转换软件.【软件功能】提供以下功能:所有类型视频转到MPG/AVI/3GP/FLV/MP4.所有类型音频转到MP3/OGG/WMA/M4A/WAV.所有...
  • Author:kevinelstriDateTime:2017/3/131、什么是文件格式?文件格式是在文件中存储信息的一种标准方法。首先,文件格式指定文件是一个二进制或ASCII文件。其次,文件展示了文件的组织形式。例如,逗号分隔值(CSV)...
  • 多媒体 = 多种媒体(文本、图形、图像、声音、动画和视频等)多媒体技术:计算机综合处理文字、图形、图像、音频、视频等多媒体信息,使多种信息建立逻辑连接,集成为一个系统并且具有交互性的一门综合性技术。多媒体...
  • HTML5超级链接、图片多媒体

    千次阅读 2021-02-10 15:42:10
    网页超级链接、图片多媒体 网页超级链接 超级链接(hyperlink)也简称为链接(link),是网站的重要组成部分,HTML正是因为有了超级链接才显得与众不同。超级链接使得浏览者可以在众多网页之间跳转和返回。 ...
  • 再比如我们最常用图片文件,格式转换、各个属性的编辑等。因为多媒体文件的操作众多,本文选取一些极具代表性的操作,以代码的形式实现各个操作。一、图片操作操作图片的模块有许多,其中比较常用的两个就是 ...
  • 再比如我们最常用图片文件,格式转换、各个属性的编辑等。因为多媒体文件的操作众多,本文选取一些极具代表性的操作,以代码的形式实现各个操作。一、图片操作操作图片的模块有许多,其中比较常用的两个就是Pillow...
  • 大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。...使用的媒体包括文字、图片、照片、声音、动画和影片,以及程式所提供的互动功能。超媒体是多媒体系统中的一个子集,超媒体系统是使用...
  • 常用的图像格式含义

    2021-04-05 16:09:08
    其他多媒体格式大多数都需要特殊的辅助应用程序,每个浏览器的使用者都要去获取、安装并正确地操作这些应用程序,这样才能看到这些特殊的文件。 1、 GIF 图形交换格式(Graphics Interchange Format,GIF)最初是...
  • 使用的媒体包括文字、图片、照片、声音 、动画和影片,以及程式所提供的互动功能。下面是小编收集整理的计算机多媒体考试试题及答案,欢迎阅读,希望大家能够喜欢。一、单项选择题(每题2分共50分)1、多媒体信息不...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,042
精华内容 11,216
关键字:

多媒体图片常用格式