C#遍历图片选定图片后缀名的问题

C#遍历图片选定图片后缀名的问题,第1张

   //文件所以可能的扩展名

   string[] exts =  { 

       "bmp", "dib", "jpg", "jpeg", 

       "jpe", "jfif", "png", "gif", 

       "tif", "tiff" };

  DirectoryInfo dir = new DirectoryInfo(ApplicationStartupPath + @"\Image\");

  FileInfo[] fileInfos = dirGetFiles();

  List<FileInfo> IMG= new List<FileInfo>();

  foreach (var fi in fileInfos)

  {

    if (extsWhere(s => fiExtensionToLower() == s)Count() != 0)

    {

             IMGAdd(fi);

    }

  }

IMG中就是所有的文件FileInfo

第一步:创建一个存储空间ListbList;第二步:遍历用户点击的文件夹查找后缀为jpg,png的(这个百度好多遍历文件夹下的文件在根据文件后缀找)第三步:Bitmapb=BitmapFactorydecode(path);(path为路径)读取以后就是bListadd(b);第四部:显示imgsetBitmap(bListget(i));(没有考虑OOM、内存溢出问题请自行解决)

已知道RTF格式中的文件是以metafile格式存在的,以{\pict\wmetafile8\picw423\pich688\picwgoal240\pichgoal390开始,然后是metafile的HEX字符串,但不知道如何将这一大段HEX字符串保存为BMP文件或metafile格式文件呢?例如下面是一段包含的RTF文件的内容: {\rtf1\ansi\ansicpg936\deff0{\fonttbl{\f0\fnil\fcharset134 \'cb\'ce\'cc\'e5;}} \viewkind4\uc1\pard\lang2052\f0\fs18{\pict\wmetafile8\picw423\pich688\picwgoal240\pichgoal390 010009000003160300000000f102000000000400000003010800050000000b0200000000050000 000c021b001100030000001e000400000007010400f1020000410b2000cc001a00100000000000 1a0010000000000028000000100000001a00000001000800000000000000000000000000000000 00000000000000000000000000ffffff00fbfcfd00ced2ec00a4aee80095a3f100c7cbe300eff0 f900e4e5eb006472d1005c68c7009aa0cf00949acd004c59c300273fde00465bd800bdc1df00e1 e2e700848bc200fdfdfe007f86c300122be000051bd700a5a9cb00f4f4f5007a8ae2003b46ac00 0f1fac00dbdce400354be0006b72ab00b9bedb000c25dd000112b900868aaf008898e100182cca 00777ca800ebedf3004f569700f8f9fb005d71de000c21c800636aa5005065db00091dbf002c35 9000fbfbfc00424a94007282de00424a8d0008128d000210a800a5acda00c8cad8004954bb001a 27a400dee1ea00303ba900daddee003f4fc300f7f7f900202da900d1d3e400d6d9e90000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101 010101013d3f10402801010101010101010126222e3e0a090d1713010101010101081a343a3b01 133b3c2b3d010101012f3721381101010101391b25130101013516212201010101011329333601 0113091633080101010101011934250101282c2a3001010101010101312d32130128292a2b0101 01010101022c2d2e2f0113232425010101010101260e2127010101101d1e0101010101011f2021 2201010118191a1301010101130d161b1c01010101110f12130101011415161701010101010108 090a0b0c0d0e0f1001010101010101010203040504060701010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101040000002701ffff030000000000 } \par }

解答: Copyright (C) Kingron, 2006 实际上很简单,RTF中对所有的二进制数据均采用HEX化的处理,所以只要把HEX转成二进制即可。也就是把那些HEX字符串,每两个作为一个整体,然后转换成二进制对应的字符,并存储下来,就是原始的数据!例如把上面的十六进制转换代码如下

[pas] procedure AnsiSotrPicToWMF(const FileName: string; Width, Height: Integer; Data: string); { 本函数用于把RTF中WMF文件ANSISTORPIC存储格式的字符串转换成对应的WMF文件 FileName表示输出的WMF文件名 Width,Height表示WMF文件的宽度和高度,即RTF中的{picwN和{pichN的N的值 Data: ANSISTORPIC格式的数据,可以包含回车,程序自动处理 } const WMFKey = Integer($9AC6CDD7); WMFWord = $CDD7; HundredthMMPerInch = 2540; type TMetafileHeader = packed record Key: Longint; Handle: SmallInt; Box: TSmallRect; Inch: Word; Reserved: Longint; CheckSum: Word; end;

function ComputeAldusChecksum(var WMF: TMetafileHeader): Word; type PWord = ^Word; var pW: PWord; pEnd: PWord; begin Result := 0; pW := @WMF; pEnd := @WMFCheckSum; while Longint(pW) < Longint(pEnd) do begin Result := Result xor pW^; Inc(Longint(pW), SizeOf(Word)); end; end;

var PureText : string; buf : PChar; Len : DWORD; wmf : TMetafileHeader; fs : TFileStream; begin /// 去掉回车换行之类的数据 PureText := StringReplace(Data, #13#10, '', [rfReplaceAll]);

/// 计算转换后的长度,并申请缓冲区内存 Len := Length(PureText) shr 1;

/// WMF头信息 FillChar(wmf, SizeOf(wmf), 0); with WMF do begin Key := WMFKEY; Inch := 96; { WMF defaults to 96 units per inch } with Box do begin Right := MulDiv(Width, WMFInch, HundredthMMPerInch); Bottom := MulDiv(Height, WMFInch, HundredthMMPerInch); end; CheckSum := ComputeAldusChecksum(WMF); end;

GetMem(buf, Len); fs := TFileStreamCreate(FileName, fmCreate); try /// 转换ANSISTORPIC格式为BIN格式 HexToBin(PChar(PureText), Buf, Len);

fsWrite(wmf, SizeOf(wmf)); fsWrite(buf^, Len); finally FreeMem(buf); fsFree; end; end;

procedure TForm1Button1Click(Sender: TObject); const fn = 'C:\owmf'; begin AnsiSotrPicToWMF(fn, 423, 688, Memo1Text); end;

[/pas]其中Memo1的Text就是那些十六进制的字符,注意不要包括RTF的那些格式数据。上面转换得到的如下: ,和RTF中是一样的!

function check(){var aa=documentform1userfilevaluetoLowerCase()split('');//以“”分隔上传文件字符串alert(aa)if(documentform1userfilevalue==""){alert('不能为空!');

return true;}else{if(aa[aalength-1]=='gif'||aa[aalength-1]=='jpg'||aa[aalength-1]=='bmp')//判断格式{alert('格式正确!');

return true;}else{alert('对不起,你选择的格式不对\n格式应为jpg、gif、bmp');

一、BMP格式

BMP是英文Bitmap(位图)的简写,它是Windows *** 作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。随着Windows *** 作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点--占用磁盘空间过大。所以,目前BMP在单机上比较流行。

二、GIF格式

GIF是英文Graphics Interchange Format(图形交换格式)的缩写。顾名思义,这种格式是用来交换的。事实上也是如此,上世纪80年代,美国一家著名的在线信息服务机构CompuServe针对当时网络传输带宽的限制,开发出了这种GIF图像格式。

GIF格式的特点是压缩比高,磁盘空间占用较少,所以这种图像格式迅速得到了广泛的应用。 最初的GIF只是简单地用来存储单幅静止图像(称为GIF87a),后来随着技术发展,可以同时存储若干幅静止图象进而形成连续的动画,使之成为当时支持2D动画为数不多的格式之一(称为GIF89a),而在GIF89a图像中可指定透明区域,使图像具有非同一般的显示效果,这更使GIF风光十足。目前Internet上大量采用的彩色动画文件多为这种格式的文件,也称为GIF89a格式文件。

此外,考虑到网络传输中的实际情况,GIF图像格式还增加了渐显方式,也就是说,在图像传输过程中,用户可以先看到图像的大致轮廓,然后随着传输过程的继续而逐步看清图像中的细节部分,从而适应了用户的"从朦胧到清楚"的观赏心理。目前Internet上大量采用的彩色动画文件多为这种格式的文件。

但GIF有个小小的缺点,即不能存储超过256色的图像。尽管如此,这种格式仍在网络上大行其道应用,这和GIF图像文件短小、下载速度快、可用许多具有同样大小的图像文件组成动画等优势是分不开的。

三、JPEG格式

JPEG也是常见的一种图像格式,它由联合照片专家组(Joint Photographic Experts Group)开发并以命名为"ISO 10918-1",JPEG仅仅是一种俗称而已。JPEG文件的扩展名为jpg或jpeg,其压缩技术十分先进,它用有损压缩方式去除冗余的图像和彩色数据,获取得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像质量。

同时JPEG还是一种很灵活的格式,具有调节图像质量的功能,允许你用不同的压缩比例对这种文件压缩,比如我们最高可以把137MB的BMP位图文件压缩至203KB。当然我们完全可以在图像质量和文件尺寸之间找到平衡点。

由于JPEG优异的品质和杰出的表现,它的应用也非常广泛,特别是在网络和光盘读物上,肯定都能找到它的影子。目前各类浏览器均支持JPEG这种图像格式,因为JPEG格式的文件尺寸较小,下载速度快,使得Web页有可能以较短的下载时间提供大量美观的图像,JPEG同时也就顺理成章地成为网络上最受欢迎的图像格式。

四、JPEG2000格式

JPEG 2000同样是由JPEG 组织负责制定的,它有一个正式名称叫做"ISO 15444",与JPEG相比,它具备更高压缩率以及更多新功能的新一代静态影像压缩技术。

JPEG2000 作为JPEG的升级版,其压缩率比JPEG高约30%左右。与JPEG不同的是,JPEG2000 同时支持有损和无损压缩,而 JPEG 只能支持有损压缩。无损压缩对保存一些重要是十分有用的。JPEG2000的一个极其重要的特征在于它能实现渐进传输,这一点与GIF的"渐显"有异曲同工之妙,即先传输图像的轮廓,然后逐步传输数据,不断提高图像质量,让图象由朦胧到清晰显示,而不必是像现在的 JPEG 一样,由上到下慢慢显示。

此外,JPEG2000还支持所谓的"感兴趣区域"特性,你可以任意指定影像上你感兴趣区域的压缩质量,还可以选择指定的部份先解压缩。 JPEG 2000 和 JPEG 相比优势明显,且向下兼容,因此取代传统的JPEG格式指日可待。

JPEG2000可应用于传统的JPEG市场,如扫描仪、数码相机等,亦可应用于新兴领域,如网路传输、无线通讯等等。

五、TIFF格式

TIFF(Tag Image File Format)是Mac中广泛使用的图像格式,它由Aldus和微软联合开发,最初是出于跨平台存储扫描图像的需要而设计的。它的特点是图像格式复杂、存贮信息多。正因为它存储的图像细微层次的信息非常多,图像的质量也得以提高,故而非常有利于原稿的复制。

该格式有压缩和非压缩二种形式,其中压缩可采用LZW无损压缩方案存储。不过,由于TIFF格式结构较为复杂,兼容性较差,因此有时你的软件可能不能正确识别TIFF文件(现在绝大部分软件都已解决了这个问题)。目前在Mac和PC机上移植TIFF文件也十分便捷,因而TIFF现在也是微机上使用最广泛的图像文件格式之一。

 六、PSD格式

这是著名的Adobe公司的图像处理软件Photoshop的专用格式Photoshop Document(PSD)。PSD其实是Photoshop进行平面设计的一张"草稿图",它里面包含有各种图层、通道、遮罩等多种设计的样稿,以便于下次打开文件时可以修改上一次的设计。在Photoshop所支持的各种图像格式中,PSD的存取速度比其它格式快很多,功能也很强大。由于Photoshop越来越被广泛地应用,所以我们有理由相信,这种格式也会逐步流行起来。

七、PNG格式

PNG(Portable Network Graphics)是一种新兴的网络图像格式。在1994年底,由于Unysis公司宣布GIF拥有专利的压缩方法,要求开发GIF软件的作者须缴交一定费用,由此促使免费的png图像格式的诞生。PNG一开始便结合GIF及JPG两家之长,打算一举取代这两种格式。1996年10月1日由PNG向国际网络联盟提出并得到推荐认可标准,并且大部分绘图软件和浏览器开始支持PNG图像浏览,从此PNG图像格式生机焕发。

PNG是目前保证最不失真的格式,它汲取了GIF和JPG二者的优点,存贮形式丰富,兼有GIF和JPG的色彩模式;它的另一个特点能把图像文件压缩到极限以利于网络传输,但又能保留所有与图像品质有关的信息,因为PNG是采用无损压缩方式来减少文件的大小,这一点与牺牲图像品质以换取高压缩率的JPG有所不同;它的第三个特点是显示速度很快,只需下载1/64的图像信息就可以显示出低分辨率的预览图像;第四,PNG同样支持透明图像的制作,透明图像在制作网页图像的时候很有用,我们可以把图象背景设为透明,用网页本身的颜色信息来代替设为透明的色彩,这样可让图像和网页背景很和谐地融合在一起。

PNG的缺点是不支持动画应用效果,如果在这方面能有所加强,简直就可以完全替代GIF和JPEG了。Macromedia公司的Fireworks软件的默认格式就是PNG。现在,越来越多的软件开始支持这一格式,而且在网络上也越来截止流行。

八、SWF格式

利用Flash我们可以制作出一种后缀名为SWF(Shockwave Format)的动画,这种格式的动画图像能够用比较小的体积来表现丰富的多媒体形式。在图像的传输方面,不必等到文件全部下载才能观看,而是可以边下载边看,因此特别适合网络传输,特别是在传输速率不佳的情况下,也能取得较好的效果。事实也证明了这一点,SWF如今已被大量应用于WEB网页进行多媒体演示与交互性设计。此外,SWF动画是其于矢量技术制作的,因此不管将画面放大多少倍,画面不会因此而有任何损害。综上,SWF格式作品以其高清晰度的画质和小巧的体积,受到了越来越多网页设计者的青睐,也越来越成为网页动画和网页设计制作的主流,目前已成为网上动画的事实标准。

九、SVG格式

SVG可以算是目前最最火热的图像文件格式了,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形。它是基于XML(Extensible Markup Language),由World Wide Web Consortium(W3C)联盟进行开发的。严格来说应该是一种开放标准的矢量图形语言,可让你设计激动人心的、高分辨率的Web图形页面。用户可以直接用代码来描绘图像,可以用任何文字处理工具打开SVG图像,通过改变部分代码来使图像具有互交功能,并可以随时插入到HTML中通过浏览器来观看。

它提供了目前网络流行格式GIF和JPEG无法具备了优势:可以任意放大图形显示,但绝不会以牺牲图像质量为代价;字在SVG图像中保留可编辑和可搜寻的状态;平均来讲,SVG文件比JPEG和GIF格式的文件要小很多,因而下载也很快。可以相信,SVG的开发将会为Web提供新的图像标准。

其它非主流图像格式:

1、PCX格式

PCX格式是ZSOFT公司在开发图像处理软件Paintbrush时开发的一种格式,这是一种经过压缩的格式,占用磁盘空间较少。由于该格式出现的时间较长,并且具有压缩及全彩色的能力,所以现在仍比较流行。

2、DXF格式

DXF(Autodesk Drawing Exchange Format)是AutoCAD中的矢量文件格式,它以ASCII码方式存储文件,在表现图形的大小方面十分精确。许多软件都支持DXF格式的输入与输出。

3、WMF格式

WMF(Windows Metafile Format)是Windows中常见的一种图元文件格式,属于矢量文件格式。它具有文件短小、图案造型化的特点,整个图形常由各个独立的组成部分拼接而成,其图形往往较粗糙。

4、EMF格式

EMF(Enhanced Metafile)是微软公司为了弥补使用WMF的不足而开发的一种Windows 32位扩展图元文件格式,也属于矢量文件格式,其目的是欲使图元文件更加容易接受

5、LIC(FLI/FLC)格式

Flic格式由Autodesk公司研制而成,FLIC是FLC和FLI的统称:FLI是最初的基于320×200分辨率的动画文件格式,而FLC则采用了更高效的数据压缩技术,所以具有比FLI更高的压缩比,其分辨率也有了不少提高。

6、EPS格式

EPS(Encapsulated PostScript)是PC机用户较少见的一种格式,而苹果Mac机的用户则用得较多。它是用PostScript语言描述的一种ASCII码文件格式,主要用于排版、打印等输出工作。

7、TGA格式

TGA(Tagged Graphics)文件是由美国Truevision公司为其显示卡开发的一种图像文件格式,已被国际上的图形、图像工业所接受。TGA的结构比较简单,属于一种图形、图像数据的通用格式,在多媒体领域有着很大影响,是计算机生成图像向电视转换的一种首选格式。

以上就是关于C#遍历图片选定图片后缀名的问题全部的内容,包括:C#遍历图片选定图片后缀名的问题、eclipse中代码,想从一个多级文件夹中,获取每个文件夹里所有后缀带.png的图片、怎样找后缀名是rtf图片,找到IE图片等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9418740.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存