JAVA教程之本人写了一个imagebuffer 转 bmp 流的代...
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Oracle收购Sun后Java前途未卜。try{BufferedImagebi=null;
if(isURL==true){
bi=ImageIO.read(newURL(inFileName));
}
else{
bi=ImageIO.read(newFile(inFileName));
}
int[]rgbArray=newint;//我测试用的图像文件象素值宽度是101宽,29长的
bi.getRGB(0,0,101,29,rgbArray,0,101);
for(inti=0;i<101*29;i++){//我做的只是双色图,以是这里查出每个象素是1(黑)仍是0(白)
if((rgbArray&0xffffff)==0x000000)
rgbArray=0;
else
rgbArray=1;
}
//以下是BMP文件格局的界说,加倍详细的申明能够到http://www.wotsit.org找
int[]identifier={B,M};
int[]fileSize={0x0E,0x02,0x00,0x00};
int[]reserved={0x00,0x00,0x00,0x00};
int[]bitmapDataOffset={0x3E,0x00,0x00,0x00};
int[]bitmapHeaderSize={0x28,0x00,0x00,0x00};
int[]width={0x65,0x00,0x00,0x00};
int[]height={0x1D,0x00,0x00,0x00};
int[]planes={0x01,0x00};
int[]bitsPerPixel={0x01,0x00};
int[]compression={0x00,0x00,0x00,0x00};
int[]bitmapDataSize={0xD0,0x01,0x00,0x00};
int[]hResolution={0x00,0x00,0x00,0x00};
int[]vResolution={0x00,0x00,0x00,0x00};
int[]colors={0x00,0x00,0x00,0x00};
int[]importantColors={0x00,0x00,0x00,0x00};
int[]palette={0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00};
//记着bmp没一个扫描行都要扩大到下一个4bytes的倍数,如101就要酿成128,扩大的byte补0便可
int[]bitmapData=newint[(101+27)*29/8];
intn=0;
for(inti=0;i<29;i++){//BMP格局是从最初一行入手下手scan的
for(intj=1;j<=101;j++){
if(rgbArray[(28-i)*101+j-1]==1){
bitmapData=bitmapData|(1<<(8-j%8)%8);
}
if(j%8==0){
n++;
}
if(j==101){
n+=4;
}
}
}
RandomAccessFileo=newRandomAccessFile(outFileName,"rw");
o.setLength(0);
for(inti=0;i<identifier.length;i++){
o.write(identifier);
}
for(inti=0;i<fileSize.length;i++){
o.write(fileSize);
}
for(inti=0;i<reserved.length;i++){
o.write(reserved);
}
for(inti=0;i<bitmapDataOffset.length;i++){
o.write(bitmapDataOffset);
}
for(inti=0;i<bitmapHeaderSize.length;i++){
o.write(bitmapHeaderSize);
}
for(inti=0;i<width.length;i++){
o.write(width);
}
for(inti=0;i<height.length;i++){
o.write(height);
}
for(inti=0;i<planes.length;i++){
o.write(planes);
}
for(inti=0;i<bitsPerPixel.length;i++){
o.write(bitsPerPixel);
}
for(inti=0;i<compression.length;i++){
o.write(compression);
}
for(inti=0;i<bitmapDataSize.length;i++){
o.write(bitmapDataSize);
}
for(inti=0;i<hResolution.length;i++){
o.write(hResolution);
}
for(inti=0;i<vResolution.length;i++){
o.write(vResolution);
}
for(inti=0;i<colors.length;i++){
o.write(colors);
}
for(inti=0;i<importantColors.length;i++){
o.write(importantColors);
}
for(inti=0;i<palette.length;i++){
o.write(palette);
}
for(inti=0;i<bitmapData.length;i++){
o.write(bitmapData);
}
o.close();
}
catch(MalformedURLExceptione){
e.printStackTrace();
}
catch(IOExceptione){
e.printStackTrace();
}
假如有甚么不分明的,请接洽我flcc@263.sina.com,我将尽我所能的匡助你。
没有那个大公司会傻了吧唧用.net开发大型项目,开发了,那等于自己一半的生命线被微软握着呢。而.net不行,限制在window系统,又是捆绑,鄙视微软之! 关于设计模式的资料,还是向大家推荐banq的网站 http://www.ckuyun.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
页:
[1]