TIFF格式图像的头文件用java怎么读出来啊

TIFF格式图像的头文件用java怎么读出来啊,第1张

说白了就是后缀名。

例如:

XXXJPG

那么这个文件格式就是JPG

还有

XXXBMP 就是BMP格式。

常见 的有

这个太多太多了,很难讲,只能说说常见的

A

ACE:Ace压缩档案格式

ACT:Microsoft office助手文件

AIF,AIFF:音频互交换文件,Silicon Graphic and Macintosh应用程序的声音格式

ANI:Windows系统中的动画光标

ARC:LH ARC的压缩档案文件

ARJ:Robert Jung ARJ压缩包文件

ASD:Microsoft Word的自动保存文件;Microsoft高级流媒体格式(microsoft advanced streaming

format,ASF)的描述文件;可用NSREX打开 Velvet Studio例子文件

ASF:Microsoft高级流媒体格式文件

ASM:汇编语言源文件,Pro/E装配文件

ASP:动态网页文件;ProComm Plus安装与连接脚本文件;Astound介绍文件

AST:Astound多媒体文件;ClarisWorks“助手”文件

Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字)

A3L:Authorware 3x库文件

A4L:Authorware 4x库文件

A5L:Authorware 5x库文件

A3M,A4M:Authorware Macintosh未打包文件

A3W,A4W,A5W:未打包的Authorware Windows文件

B

BAK:备份文件

BAS:BASIC源文件

BAT:批处理文件

BIN:二进制文件

BINHex:苹果的一种编码格式

BMP:Windows或OS/2位图文件

BOOK:Adobe FrameMaker Book文件

BOX:Lotus Notes的邮箱文件

BPL:Borlard Delph 4打包库

BSP:Quake图形文件

BUN:CakeWalk 声音捆绑文件(一种MIDI程序)

C

C0l:台风波形文件

CAB:Microsoft压缩档案文件

CAD:Softdek的Drafix CAD文件

CAM:Casio照相机格式

CAP:压缩音乐文件格式

CAS:逗号分开的ASCⅡ文件

CCB:Visual Basic动态按钮配置文件

CCH:Corel图表文件

CCO:CyberChat数据文件

CCT:Macromedia Director Shockwave投影

CDA:CD音频轨道

CDF:Microsoft频道定义格式文件

CDI:Philip的高密盘交互格式

CDM:Visual dBASE自定义数据模块文件

CDR:CorelDRAW绘图文件;原始音频CD数据文件

CDT:CorelDRAW模板

CDX:CorelDRAW压缩绘图文件;Microsoft Visual FoxPro索引文件

CFG:配置文件

CGI:公共网关接口脚本文件

CGM:计算机图形元文件

CH:OS/2配置文件

CHK:由Windows磁盘碎片整理器或磁盘扫描保存的文件碎片

CHM:编译过的HTML文件

CHP:Ventura Publisher章节文件

CHR:字符集(字体文件)

CHT:ChartViem文件;Harvard Graphics矢量文件

CIF:Adaptec CD 创建器 CD映像文件

CIL:Clip Gallery下载包

CIM:SimCity 2000文件

CIN:OS/2改变控制文件用于跟踪INI文件中的变化

CLASS:Java类文件

CLP:Windows 剪贴板文件

CLL:Crick Software Clicker文件

CLS:Visual Basic类文件

CMD:Windows NT,OS/2的命令文件;DOS CD/M命令文件;dBASEⅡ程序文件

CPI:Microsoft MS-DOS代码页信息文件

CPL:控制面板扩展名,Corel颜色板

CPP:C++代码文件

CPR:Corel提供说明书文件

CPT:Corel 照片-绘画图像

CST:Macromedia Director Cast文件

CUR:Windows光标文件

D

DBF:dBASE文件,一种由Ashton-Tate创建的格式,可以被ACT!、Lipper、FoxPro、Arago、Wordtech、Xbase和类似数据库或与数据库有关产品识别;可用数据文件(能被Excel

97打开);Oracle 81x表格空间文件

DBX:DataBearn图像;Microsoft Visual FoxPro表格文件

DCT:Microsoft Visual FoxPro数据库容器

DCU:Delphi编译单元文件

DCX:Microsoft Visual FoxPro数据库容器;基于PCX的传真图像;宏

DIR:MacromediaDirector文件

DLL:动态链接库

DOC:FrameMaker或FrameBuilder文档;Word Star文档、Word

Perfect文档、Microsoft:Word文档;DisplayWrite文档

DOT:Microsoft Word文档模板

DPL:Borland Delph 3压缩库

DRV:驱动程序

DRW:Micrografx Designer/Draw;Pro/E绘画文件

DSF:Micrografx Designer VFX文件

DSG:DOOM保存的文件

DSM:Dynamic Studio音乐模块(MOD)文件

DSP:Microsoft Developer Studio工程文件

DSQ:Corel QUERY(查询)文件

DST:刺绣机图形文件

DSW:Microsoft Developer Studio工作区文件

DTA:World Bank(世界银行)的STARS数据文件

DTD:SGML文档类型定义(DTD)文件

DTED:地面高度数字数据(图形的数据格式)文件

DTF:Symantec Q&A相关的数据库数据文件

DTM:DigiTrakker模块文件

DUN:Microsoft拔号网络导出文件

DV:数字视频文件(MIME)

DWG:AutoCAD工程图文件;AutoCAD或Generic CADD老版本的绘图格式

DXR:Macromedia Director受保护(不可编辑)**文件

E

EDA:Ensoniq ASR磁盘映像

EDD:元素定义文档(FrameMaker+SGML文档)

EDE:Ensoniq EPS磁盘映像

EDK:Ensoniq KT磁盘映像

EDQ:Ensoniq SQ1/SQ2/Ks32磁盘映像

EDS:Ensoniq SQ80磁盘映像

EDV:Ensoniq VFX-SD磁盘映像

EFA:Ensoniq ASR文件

EFE:Ensoniq EPS文件

EFK:Ensoniq KT文件

EFQ:Ensoniq SQ1/SQ2/Ks32文件

EFS:Ensoniq SQ80文件

EFV:Ensoniq VFX-SD文件

EMD:ABT扩展模块

EMF:Windows增强元文件

EML:Microsoft Outlook Express邮件消息(MIME RTC822)文件

EXE:可执行文件(程序)

F

FAV:Microsoft Outlook导航条

FAX:传真类型图像

FCD:虚拟CD-ROM

FDF:Adobe Acrobat表单文档文件

FLA:Macromedia Flash**

FND:Microsoft Explorer保存的搜索文件(Find applet)

FON:系统字体

FRT:Microsoft FoxPro报表文件

FRX:Visual Basic表单文本;Microsoft FoxPro报表文件

FXP:经Microsoft FoxPro编译的源文件

G

GDM:铃声、口哨声和声音板模块格式

GetRight:GetRight未完成的下载文件

GHO:Norton 克隆磁盘映像

GID:Windows 95全局索引文件(包括帮助状态)

GIF:CompuServe位图文件

GL:动画格式

GRP:程序管理组

H

HEX:Macintosh BinHex20文件

HLP:帮助文件;Date CAD Windows帮助文件

HPP:C++程序头文件

HQX:Macintosh BinHex 40文件

HT:HyperTerminal(超级终端)

HTM,HTML:超文本文档

HTT:Microsoft超文本模板

HTX:扩展HTML模板

I

ICO:Windows图标

IDX:Microsoft FoxPro相关数据库索引文件;Symantec Q&A相关数据库索引文件;Microsoft Outlook

Express文件

IMG:GEM映像

INF:信息文件

INI:初始化文件;Mwave DSP Synth的“nwsynthini” GMS安装;Cravis Ultrasound bank安装

INP:Oracle 30版或早期版本的表单源代码

INRS:INRS远程通信声频

INS:InstallShield安装脚本;X-Internet签字文件;Ensoniq EPS字簇设备;Cell/ⅡMAC/PC抽样设备

INT:中间代码,当一个源程序经过语法检查后编译产生一个可执行代码

IOF:Findit文档

IQY:Microsoft Internet查询文件

ISO:根据ISD 9660有关CD-ROM文件系统标准列出CD-ROM上的文件

ISP:X-Internet签字文件

IST:数字跟踪设备文件

ISU:InstallShield卸装脚本

IT:脉冲跟踪系统音乐模块(MOD)文件

ITI:脉冲跟踪系统设备

ITS:脉冲跟踪系统抽样,Internet文档位置

IV:Open Inventor中使用的文件格式

IVD:超过20/20微观数据维数或变量等级文件

IVP:超过20/20的用户子集配置文件

IVT:超过20/20表或集合数据文件

IVX:超过20/20微数据目录文件

IW:Idlewild屏幕保护程序

IWC:Install Watch文档

J

J62:Ricoh照相机格式

JAR:Java档案文件(一种用于applet和相关文件的压缩文件)

JAVA:Java源文件

JAR:Java档案文件(一种用于applet和相关文件的压缩文件)

JAVA:Java源文件

JFF,JFIF,JIF:JPEG文件

JPE,JPEG,JPG:JPEG图形文件

JS:javascript源文件

JSP:HTML网页,其中包含有对一个Java servlet的参考

K

KAR:卡拉OK MIDI文件(文本+MIDI)

L

LAB:Visual dBASE标签文件

LBT,LBX:Microsoft FoxPro标签文件

LDB:Microsoft Access加锁文件

LHA:LZH更换文件后缀

LOG:日志文件

LZH:LH ARC压缩档案

M

M1V:MPEG相关文件(MIME"mpeg"类型)

M3D:Corel Motion 3D动画文件

M3U:MPEG URL(MIME声音文件)

MAM:Microsoft Access宏

MAQ:Microsoft Access查询文件

MAR:Microsoft Access报表文件

MBX:Microsoft Outlook保存email格式;Eudora邮箱

MCW:Microsoft Word的Macintosh文档

MDB:Microsoft Access数据库

MDN:Microsoft Access空数据库模板

MDW:Microsoft Access工作组文件

MID:MIDI音乐

MMM:Microsoft多媒体**

MOV:QuickTime for Windows**

MP2:第二层MPEG音频文件

MP3:第三层MPEG音频文件

MPA:MPEG相关文件,MIME“mpeg类型”

MPE,MPEG,MPG:MPEG动画文件

MPP:Microsoft工程文件;CAD绘图文件格式

MPR:Microsoft FoxPro菜单(已编译)

MSI:Windows 安装器包

MSN:Microsoft 网络文档;Descent Mission文件

O

OBD:Microsoft Office活页夹

OBJ:对象文件

OBZ:Microsoft Office活页夹向导

OCX:Microsoft对象链接与嵌入定制控件

ODS:Microsoft Outlook Express邮箱文件

OFT:Microsoft Outlook模板

OPX:OPL扩展DLL(动态链接库)

OSS:Microsoft Office查找文件

OST:Microsoft Exchange / Outlook 离线文件

P

PAL:压缩文件

PART:Go!Zilla部分下载文件

PAS:Pascal源代码

PCS:PICS动画文件

PDF:Adobe Acrobat

可导出文档格式文件(可用Web浏览器显示);Microsoft系统管理服务器包定义文件;NetWare打印机定义文件

PHP,PHP3:包含有PHP脚本的HTML网页

PHTML:包含有PHP脚本的HTML网页;由Perl分析解释的HTML

PM5:Pagemaker 50文件

PM6:Pagemaker 60文件

PPS:Microsoft Powerpoint幻灯片放映

PPT:Microsoft Powerpoint演示文稿

PRF:Windows系统文件,Macromedia导演设置文件

PSD:Adobe photoshop位图文件

PSM:Protracker Studio模型格式;Epic游戏的源数据文件

PST:Microsoft Outlook个人文件夹文件

PWL:Windows 95口令列表文件

Q

QIF:QuickTime相关图像(MIME);Quicken导入文件

QT,QTM:QuickTime**

QTI,QTIF:QuickTime相关图像

QTP:QuickTime优先文件

QTS:Mac PICT图像文件;QuickTime相关图像

QTX:QuickTime相关图像

R

RA:RealAudio声音文件

RAM:RealAudio元文件

RAR:RAR压缩档案(Eugene Roshall格式)

REC:录音机宏;RapidComm声音文件

REG:注册表文件

REP:Visual dBASE报表文件

RES:Microsoft Visual C++资源文件

RM:RealAudio视频文件

RMF:Rich Map格式(3D游戏编辑器使用它来保存图)

ROM:基于盒式磁带的家庭游戏仿真器文件(来自Atari

2600、Colecovision、Sega、Nintendo等盒式磁带里的ROM完全拷贝,在两个仿真器之间不可互修改)

Rxx:多卷档案上的RAR压缩文件(xx=1~99间的一个数字)

S

SAV:游戏保存文件

SB:原始带符号字节(8位)数据

SBK:Creative Labs的Soundfont 10 Bank文件;(Soundb laster)/EMU SonndFont v1x

Bank文件

SBL:Shockwave Flash对象文件

SCF:Windows Explorer命令文件

SCH:Microsoft Schedule+1

SCP:拨号网络脚本文件

SCR:Windows屏幕保护;传真图像;脚本文件

SFX:RAR自解压档案

SHTML:含有服务器端包括(SSI)的HTML文件

SPL:Shockwave Flash对象;DigiTrakker抽样

SQL:Informix SQL查询;通常被数据库产品用于SQL查询(脚本、文本、二进制)的文件扩展名

STM:shtml的短后缀形式,含有一个服务端包括(SSI)的HTML文件;Scream Tracker V2音乐模块(MOD)文件

STR:屏幕保护文件

SWA:在Macromedia导演文件(MP3文件)中的Shockwave声音文件 SYS:系统文件

T

T64:Commodore 64仿真器磁带映像文件

THEME:Windows 95桌面主题文件

TIF,TIFF:标签图像文件格式(TIFF)位图

TMP:Windows临时文件

TRM:终端文件

TXT:ASCⅡ文本格式的声音数据

TZ:老的压缩格式文件

V

VBA:VBase文件

VBP:Microsoft Visual Basic工程文件

VBW:Microsoft Visual Basic工作区文件

VBX:Microsoft Visual Basic用户定制控件

VQE,VQL:Yamaha Sound-VQ定位器文件

VQF:Yamaha Sound-VQ文件(可能出现标准)

VRF:Oracle 7配置文件

VSL:下载列表文件(GetRight)

W

WAB:Microsoft Outlook文件

WAD:包含有视频、玩家水平和其他信息的DOOM游戏的大文件

WAL:Quake 2正文文件

WAV:Windows波形声形

WBK:Microsoft Word备份文件

WFM:Visual dBASE Windows表单

WFN:在CorelDRAW中使用的符号

WIZ:Microsoft Word向导

WRL:虚拟现实模型

WWL:Microsoft Word内插器文件

X

XLK:Microsoft Excel备份

XLL:Microsoft Excel内插器文件

XLM:Microsoft Excel宏

XLS:Microsoft Excel工作单

XLT:Microsoft Excel模板

XLV:Microsoft Excel VBA模块

XLW:Microsoft Excel工作簿/工作区

Z

ZAP:Windows软件安装配置文件

ZIP:Zip文件

000-999:用于为老版本(或备份)文件编号(比如:被安装程序改变的CONFIGSYS文件);又可用于为小范围的PC应用程序的多个用户相关数据文件编号

12M:Lotus 1-2-3 97 SmartMaster文件

123:Lotus 1-2-3 97文件

2D:VersaCAD的2维绘画文件

2GR,3GR:在Windows之下的VGA图形驱动程序/配置文件

386:在386或更高级处理器上使用的文件

3D:VersaCAD的3维绘画文件

3DM:3D NURBS建模器,Rhino

3DS:3D Studio(DOS下)格式文件

386:在386或更高级处理器上使用的文件

4GE:Informix 4GL编译后代码

4GL:Informix 4GL源代码

给你个示例,应该看得懂吧

File f =new File("Testtxt");

String fileName=fgetName();

String prefix=fileNamesubstring(fileNamelastIndexOf("")+1);

Systemoutprintln(prefix);

}

int数据是32位的,也就是4个字节的内容,sm文件中的channels是4个字节吗?如果是1、2的话估计不大可能用int,试试short

----补充---------------------------------------------

因为我没见过此类文件,具体的也不好说,

不过看你的[B@1fe571f好像是直接将一个没有覆盖toString()方法的对象打印出来,也就是调的Object的toString()方法,检查下你的代码,是不是类型转换的时候出问题了

继续补充————————

刚才试了下

byte a[]="aaaa"getBytes();

Systemoutprintln(a);

输出的是[B@4f1d0d,证明你的代码是有问题的,将byte数组转换为String输出应该是Systemoutprintln(new String(a));

Java可以用来下载文件,并显示文件类型。通常,下载文件时可以显示其文件类型,此文件类型可以是图像文件、文本文件、压缩文件、表格文件、数据库文件等。Java可以通过一些API读取文件的>

1 C++读取bmp文件实例

2 java读取bmp文件

#include <stringh>

#include <mathh>

#include <stdioh>

#include <stdlibh>

#include <malloch>

#define WIDTHBYTES(bits) (((bits)+31)/324)

typedef unsigned char BYTE;//字符型

typedef unsigned short WORD;//短整型

typedef unsigned long DWORD;//长整形

typedef long LONG;

//位图文件头信息结构定义

//其中不包含文件类型信息(由于结构体的内存结构决定,要是加了的话将不能正确读取文件信息)

typedef struct tagBITMAPFILEHEADER {

//WORD bfType;

DWORD bfSize; //文件大小

WORD bfReserved1; //保留字,不考虑

WORD bfReserved2; //保留字,同上

DWORD bfOffBits; //实际位图数据的偏移字节数,即前三个部分长度之和

} BITMAPFILEHEADER;

//信息头BITMAPINFOHEADER,也是一个结构,其定义如下:

typedef struct tagBITMAPINFOHEADER{

//public:

DWORD biSize; //指定此结构体的长度,为40

LONG biWidth; //位图宽

LONG biHeight; //位图高

WORD biPlanes; //平面数,为1

WORD biBitCount; //采用颜色位数,可以是1,2,4,8,16,24,新的可以是32

DWORD biCompression; //压缩方式,可以是0,1,2,其中0表示不压缩

DWORD biSizeImage; //实际位图数据占用的字节数

LONG biXPelsPerMeter; //X方向分辨率

LONG biYPelsPerMeter; //Y方向分辨率

DWORD biClrUsed; //使用的颜色数,如果为0,则表示默认值(2^颜色位数)

DWORD biClrImportant; //重要颜色数,如果为0,则表示所有颜色都是重要的

} BITMAPINFOHEADER;

//调色板Palette,当然,这里是对那些需要调色板的位图文件而言的。24位和32位是不需要调色板的。

//(似乎是调色板结构体个数等于使用的颜色数。)

typedef struct tagRGBQUAD {

//public:

BYTE rgbBlue; //该颜色的蓝色分量

BYTE rgbGreen; //该颜色的绿色分量

BYTE rgbRed; //该颜色的红色分量

BYTE rgbReserved; //保留值

} RGBQUAD;

void showRgbQuan(tagRGBQUAD pRGB)

{

printf("(%-3d,%-3d,%-3d) ",pRGB->rgbRed,pRGB->rgbGreen,pRGB->rgbBlue);

}

int main(){

char ch,pd;

int b,c,m,d,w,e,f;

int x,y;

unsigned char q;

int i,j;

unsigned char a[2];

char strFile[50];

BITMAPFILEHEADER bitHead;

BITMAPINFOHEADER bitInfoHead;

tagRGBQUAD pRgb ;

FILE fp;

FILE p;

q=(unsigned char)malloc(1);

printf("mkx用C语言编程来读取BMP文件某一像素点的数据\n请输入一个bmp文件:\n");

scanf("%s",strFile);

fp=fopen(strFile,"rb");

if(fp!=NULL)

{

printf("file open success!\n");

WORD fileType;

fread(&fileType,1,sizeof(WORD),fp);

if(fileType != 0x4d42)

{

printf("file is not bmp file!");

system("pause");

return 0;

}

}

else

{

printf("file open fail!\n");

system("pause");

return 0;

}

//读文件头信息,并打印文件头信息各项的值

fread(&bitHead,1,sizeof(tagBITMAPFILEHEADER),fp);

printf("bmp文件头信息\n文件大小:%d\n保留字:%d\n保留字:%d\n实际位图数据的偏移字节数:%d\n\n",

bitHeadbfSize,bitHeadbfReserved1,bitHeadbfReserved2,bitHeadbfOffBits);

//读文件信息头,并打印文件信息头各项的值

fread(&bitInfoHead,1,sizeof(tagBITMAPINFOHEADER),fp);

printf("bmp文件信息头\n结构体的长度:%d\n位图宽:%d\n位图高:%d\nbiPlanes平面数:%d\nbiBitCount采用颜色位数:%d\n压缩方式:%d\nbiSizeImage实际位图数据占用的字节数:%d\nX方向分辨率:%d\nY方向分辨率:%d\n使用的颜色数:%d\n重要颜色数:%d\n",

bitInfoHeadbiSize,bitInfoHeadbiWidth,bitInfoHeadbiHeight,bitInfoHeadbiPlanes,bitInfoHeadbiBitCount,bitInfoHeadbiCompression,bitInfoHeadbiSizeImage,bitInfoHeadbiXPelsPerMeter,bitInfoHeadbiYPelsPerMeter,bitInfoHeadbiClrUsed,bitInfoHeadbiClrImportant);

if(bitInfoHeadbiBitCount < 24){

printf("该文件有调色板,即该位图为非真彩色\n\n");

m=1;

if(bitInfoHeadbiBitCount =8){

long nPlantNum = long(pow(2,double(bitInfoHeadbiBitCount))); // Mix color Plant Number;

pRgb=(tagRGBQUAD )malloc(nPlantNumsizeof(tagRGBQUAD));

memset(pRgb,0,nPlantNumsizeof(tagRGBQUAD));

int num = fread(pRgb,4,nPlantNum,fp);

printf("Color Plate Number: %d\n",nPlantNum);

printf("颜色板信息:\n");

for (int i =0; i<nPlantNum;i++)

{

if (i%5==0)

{

printf("\n");

}

showRgbQuan(&pRgb[i]);

}

printf("\n");

}

}

else{

printf("该位图为24位真彩色\n\n");

m=3;

}

fclose(fp);

while(ch!='N'){

p=fopen(strFile,"rb");

ch=NULL;

f=bitInfoHeadbiHeight;

e=bitInfoHeadbiWidth;

b=bitHeadbfOffBits;

printf("输入指定像素点的数据(行:1~%d 列1~%d)\n",f,e);

printf("请输入第i行:");

scanf("%d",&x);

printf("请输入第j列:");

scanf("%d",&y);

c=b+(x-1)em+m(y-1);

fseek(p,c,0);

//printf("%d\n",m);

if(m<2){

fread(&a[0],1,1,p);

printf("该点像素点的数据(十六进制)为:%x ",a[0]);

printf("用十进制表示:%d\n",a[0]);

d=a[0];

printf("它对应的rgb值为:");

showRgbQuan(&pRgb[d]);

printf("\n");

}

else {

for(i=0;i<3;i++){

fread(&a[i],1,1,p);

// printf("%x\n",a[i]);

}

printf("十六进制表示:\n蓝:%x\n绿:%x\n红:%x\n",a[0],a[1],a[2]);

printf("十进制表示:\n蓝:%d\n绿:%d\n红:%d\n",a[0],a[1],a[2]);

}

rewind(p);

//w=ftell(p);

//printf("%d",w);

fclose(p);

printf("继续请输入任意字符,如需退出请输入N\n");

getchar();

scanf("%c",&ch);

}

printf("感谢您使用~\n");

system("pause");

return 0;

}

import javaawtImage;

import javaawtToolkit;

import javaawtimageMemoryImageSource;

import javaioFileInputStream;

import javaioIOException;

import javaxswingImageIcon;

import javaxswingJFrame;

import javaxswingJLabel;

import javaxswingJScrollPane;

//

//really just a collection of methods to read a BMP file

//

public class BMPLoader

{

// build an int from a byte array - convert little to big endian

public static int constructInt(byte[] in, int offset) {

int ret = ((int) in[offset + 3] & 0xff);

ret = (ret << 8) | ((int) in[offset + 2] & 0xff);

ret = (ret << 8) | ((int) in[offset + 1] & 0xff);

ret = (ret << 8) | ((int) in[offset + 0] & 0xff);

return (ret);

}

// build an int from a byte array - convert little to big endian

// set high order bytes to 0xfff

public static int constructInt3(byte[] in, int offset) {

int ret = 0xff;

ret = (ret << 8) | ((int) in[offset + 2] & 0xff);

ret = (ret << 8) | ((int) in[offset + 1] & 0xff);

ret = (ret << 8) | ((int) in[offset + 0] & 0xff);

return (ret);

}

// build an int from a byte array - convert little to big endian

public static long constructLong(byte[] in, int offset) {

long ret = ((long) in[offset + 7] & 0xff);

ret |= (ret << 8) | ((long) in[offset + 6] & 0xff);

ret |= (ret << 8) | ((long) in[offset + 5] & 0xff);

ret |= (ret << 8) | ((long) in[offset + 4] & 0xff);

ret |= (ret << 8) | ((long) in[offset + 3] & 0xff);

ret |= (ret << 8) | ((long) in[offset + 2] & 0xff);

ret |= (ret << 8) | ((long) in[offset + 1] & 0xff);

ret |= (ret << 8) | ((long) in[offset + 0] & 0xff);

return (ret);

}

// build an double from a byte array - convert little to big endian

public static double constructDouble(byte[] in, int offset) {

long ret = constructLong(in, offset);

return (DoublelongBitsToDouble(ret));

}

// build an short from a byte array - convert little to big endian

public static short constructShort(byte[] in, int offset) {

short ret = (short) ((short) in[offset + 1] & 0xff);

ret = (short) ((ret << 8) | (short) ((short) in[offset + 0] & 0xff));

return (ret);

}

// internal class representing a bitmap header structure

// with code to read it from a file

static class BitmapHeader {

public int nsize;

public int nbisize;

public int nwidth;

public int nheight;

public int nplanes;

public int nbitcount;

public int ncompression;

public int nsizeimage;

public int nxpm;

public int nypm;

public int nclrused;

public int nclrimp;

// read in the bitmap header

public void read(FileInputStream fs) throws IOException

{

final int bflen = 14; // 14 byte BITMAPFILEHEADER

byte bf[] = new byte[bflen];

fsread(bf, 0, bflen);

final int bilen = 40; // 40-byte BITMAPINFOHEADER

byte bi[] = new byte[bilen];

fsread(bi, 0, bilen);

// Interperet data

nsize = constructInt(bf, 2);

// Systemoutprintln("File type is :"+(char)bf[0]+(char)bf[1]);

// Systemoutprintln("Size of file is :"+nsize);

nbisize = constructInt(bi, 2);

// Systemoutprintln("Size of bitmapinfoheader is :"+nbisize);

nwidth = constructInt(bi, 4);

// Systemoutprintln("Width is :"+nwidth);

nheight = constructInt(bi, 8);

// Systemoutprintln("Height is :"+nheight);

nplanes = constructShort(bi, 12); //(((int)bi[13]&0xff)<<8) |

// (int)bi[12]&0xff;

// Systemoutprintln("Planes is :"+nplanes);

nbitcount = constructShort(bi, 14); //(((int)bi[15]&0xff)<<8) |

// (int)bi[14]&0xff;

// Systemoutprintln("BitCount is :"+nbitcount);

// Look for non-zero values to indicate compression

ncompression = constructInt(bi, 16);

// Systemoutprintln("Compression is :"+ncompression);

nsizeimage = constructInt(bi, 20);

// Systemoutprintln("SizeImage is :"+nsizeimage);

nxpm = constructInt(bi, 24);

// Systemoutprintln("X-Pixels per meter is :"+nxpm);

nypm = constructInt(bi, 28);

// Systemoutprintln("Y-Pixels per meter is :"+nypm);

nclrused = constructInt(bi, 32);

// Systemoutprintln("Colors used are :"+nclrused);

nclrimp = constructInt(bi, 36);

// Systemoutprintln("Colors important are :"+nclrimp);

}

}

public static Image read(FileInputStream fs)

{

try {

BitmapHeader bh = new BitmapHeader();

bhread(fs);

if (bhnbitcount == 24)

return (readMap24(fs, bh));

if (bhnbitcount == 32)

return (readMap32(fs, bh));

if (bhnbitcount == 8)

return (readMap8(fs, bh));

fsclose();

} catch (IOException e) {

// Systemoutprintln("Caught exception in loadbitmap!");

}

return (null);

}

/

readMap24 internal routine to read the bytes in a 24 bit bitmap

Arguments:

fs - file stream

bh - header struct

Returns:

Image Object, be sure to check for (Image)null !!!!

/

protected static Image readMap32(FileInputStream fs, BitmapHeader bh)

throws IOException

{

Image image;

// No Palatte data for 24-bit format but scan lines are

// padded out to even 4-byte boundaries

int xwidth = bhnsizeimage / bhnheight;

int ndata[] = new int[bhnheight bhnwidth];

byte brgb[] = new byte[bhnwidth 4 bhnheight];

fsread(brgb, 0, bhnwidth 4 bhnheight);

int nindex = 0;

for (int j = 0; j < bhnheight; j++)

{

for (int i = 0; i < bhnwidth; i++)

{

ndata[bhnwidth (bhnheight - j - 1) + i] = constructInt3(

brgb, nindex);

nindex += 4;

}

}

image = ToolkitgetDefaultToolkit()createImage

(new MemoryImageSource(bhnwidth, bhnheight,

ndata, 0, bhnwidth));

fsclose();

return (image);

}

/

readMap24 internal routine to read the bytes in a 24 bit bitmap

Arguments:

fs - file stream

bh - header struct

Returns:

Image Object, be sure to check for (Image)null !!!!

/

protected static Image readMap24(FileInputStream fs, BitmapHeader bh)

throws IOException

{

Image image;

// No Palatte data for 24-bit format but scan lines are

// padded out to even 4-byte boundaries

int npad = (bhnsizeimage / bhnheight) - bhnwidth 3;

int ndata[] = new int[bhnheight bhnwidth];

byte brgb[] = new byte[(bhnwidth + npad) 3 bhnheight];

fsread(brgb, 0, (bhnwidth + npad) 3 bhnheight);

int nindex = 0;

for (int j = 0; j < bhnheight; j++)

{

for (int i = 0; i < bhnwidth; i++)

{

ndata[bhnwidth (bhnheight - j - 1) + i] = constructInt3(

brgb, nindex);

nindex += 3;

}

nindex += npad;

}

image = ToolkitgetDefaultToolkit()createImage

(new MemoryImageSource(bhnwidth, bhnheight,

ndata, 0, bhnwidth));

fsclose();

return (image);

}

/

readMap8 internal routine to read the bytes in a 8 bit bitmap

Arguments:

fs - file stream

bh - header struct

Returns:

Image Object, be sure to check for (Image)null !!!!

/

protected static Image readMap8(FileInputStream fs, BitmapHeader bh)

throws IOException

{

Image image;

// Have to determine the number of colors, the clrsused

// parameter is dominant if it is greater than zero If

// zero, calculate colors based on bitsperpixel

int nNumColors = 0;

if (bhnclrused > 0)

{

nNumColors = bhnclrused;

}

else

{

nNumColors = (1 & 0xff) << bhnbitcount;

}

// Systemoutprintln("The number of Colors is"+nNumColors);

// Some bitmaps do not have the sizeimage field calculated

// Ferret out these cases and fix 'em

if (bhnsizeimage == 0)

{

bhnsizeimage = ((((bhnwidth bhnbitcount) + 31) & ~31) >> 3);

bhnsizeimage = bhnheight;

// Systemoutprintln("nsizeimage (backup) is"+nsizeimage);

}

// Read the palatte colors

int npalette[] = new int[nNumColors];

byte bpalette[] = new byte[nNumColors 4];

fsread(bpalette, 0, nNumColors 4);

int nindex8 = 0;

for (int n = 0; n < nNumColors; n++)

{

npalette[n] = constructInt3(bpalette, nindex8);

nindex8 += 4;

}

// Read the image data (actually indices into the palette)

// Scan lines are still padded out to even 4-byte

// boundaries

int npad8 = (bhnsizeimage / bhnheight) - bhnwidth;

// Systemoutprintln("nPad is:"+npad8);

int ndata8[] = new int[bhnwidth bhnheight];

byte bdata[] = new byte[(bhnwidth + npad8) bhnheight];

fsread(bdata, 0, (bhnwidth + npad8) bhnheight);

nindex8 = 0;

for (int j8 = 0; j8 < bhnheight; j8++)

{

for (int i8 = 0; i8 < bhnwidth; i8++)

{

ndata8[bhnwidth (bhnheight - j8 - 1) + i8] =

npalette[((int) bdata[nindex8] & 0xff)];

nindex8++;

}

nindex8 += npad8;

}

image = ToolkitgetDefaultToolkit()createImage

(new MemoryImageSource(bhnwidth, bhnheight,

ndata8, 0, bhnwidth));

return (image);

}

/

load method - see read for details

Arguments:

sdir and sfile are the result of the FileDialog()

getDirectory() and getFile() methods

Returns:

Image Object, be sure to check for (Image)null !!!!

/

public static Image load(String sdir, String sfile) {

return (load(sdir + sfile));

}

/

load method - see read for details

Arguments:

sdir - full path name

Returns:

Image Object, be sure to check for (Image)null !!!!

/

public static Image load(String sdir)

{

try

{

FileInputStream fs = new FileInputStream(sdir);

return (read(fs));

}

catch (IOException ex) {

return (null);

}

}

public static void main(String[] args) throws IOException

{

if (argslength == 0) {

Systemoutprintln("Usage >java BMPLoader ImageFilebmp");

Systemexit(0);

}

FileInputStream in = new FileInputStream(args[0]);

Image TheImage = read(in);

JFrame TheFrame = new JFrame(args[0]);

JLabel TheLabel = new JLabel(new ImageIcon(TheImage));

TheFramegetContentPane()add(new JScrollPane(TheLabel));

TheFramesetSize(300, 300);

TheFramesetVisible(true);

}

//end class BMPLoader

}

java前端下载完打开压缩文件头部错误解决办法:

1、将本地数据备份成zip文件。

2、将备份的zip文件通过sftp上传到文件服务器。

3、将文件服务器上的zip文件下载到运行服务器。

4、将下载的zip文件解压到本地(文件大小超过50KB时报文件被损坏)。

以下方案切实可行~

import javaioFile;

import javaioRandomAccessFile;

import javanioMappedByteBuffer;

import javaniochannelsFileChannel;

public class t {

public static void main(String[] args) throws Exception {

final int BUFFER_SIZE = 0x300000;// 缓冲去大小为3M

File f = new File("C:\\Documents and Settings\\XHY\\桌面\\atxt");

/

map(FileChannelMapMode mode,long position, long size)

mode - 根据是按只读、读取/写入或专用(写入时拷贝)来映射文件,分别为 FileChannelMapMode 类中所定义的 READ_ONLY、READ_WRITE 或 PRIVATE 之一

position - 文件中的位置,映射区域从此位置开始;必须为非负数

size - 要映射的区域大小;必须为非负数且不大于 IntegerMAX_VALUE

所以若想读取文件后半部分内容,如例子所写;若想读取文本后1/8内容,需要这样写map(FileChannelMapModeREAD_ONLY, flength()7/8,flength()/8)

/

MappedByteBuffer inputBuffer = new RandomAccessFile(f, "r")getChannel()map(FileChannelMapModeREAD_ONLY, flength()/2,flength()/2);

byte[] dst = new byte[BUFFER_SIZE];// 每次读出3M的内容

Long start = SystemcurrentTimeMillis();

for (int offset = 0; offset < inputBuffercapacity(); offset += BUFFER_SIZE) {

if (inputBuffercapacity() - offset >= BUFFER_SIZE) {

for (int i = 0; i < BUFFER_SIZE; i++)

dst[i] = inputBufferget(offset + i);

} else {

for (int i = 0; i < inputBuffercapacity() - offset; i++)

dst[i] = inputBufferget(offset + i);

}

int length = (inputBuffercapacity()%BUFFER_SIZE==0)BUFFER_SIZE:inputBuffercapacity()%BUFFER_SIZE;

// Systemoutprintln(new String(dst,0,length));//new String(dst,0,length)这样可以取出缓存保存的字符串,可以对其进行 *** 作

}

long end = SystemcurrentTimeMillis();

Systemoutprintln("读取文件文件一半内容花费:"+(end-start)+"毫秒");

}

}

以上就是关于TIFF格式图像的头文件用java怎么读出来啊全部的内容,包括:TIFF格式图像的头文件用java怎么读出来啊、java怎么获取上传文件的后缀、java 读取自定义类型文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存