首页编程java编程java rgb是什么格式 java实现提取图片每一点的RGB

java rgb是什么格式 java实现提取图片每一点的RGB

编程之家 2023-10-14 87次浏览

这篇文章给大家聊聊关于java rgb是什么格式,以及java实现提取图片每一点的RGB对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

java rgb是什么格式 java实现提取图片每一点的RGB

手机Java游戏要怎么汉化啊

如果有人做过GBA游戏的汉化,一定会觉得,手机游戏的汉化真的是太容易了。简单的说,汉化的工作就是把游戏中所有的文本都替换成中文的。在一个手机游戏里,修改文本大概存在以下3种形式:

图片字。就是指所有以图片形式存在的文本,比如游戏的splash,文字背景或特效等等。替换的方法很简单,找个美工做图,然后直接把原图换掉。有很多过去的游戏都是把这些图片不经过任何处理或者只去掉扩展名放到jar里,替换这些很简单;但是为了减容,现在的很多游戏则是把n张图片打包放在一个文件里,要准确的替换这些文件就有些麻烦了。

首先要弄清文件的储存格式。按程序的画法,可以大体分为drawImage和drawRGB两种形式。

java rgb是什么格式 java实现提取图片每一点的RGB

drawImage就是直接把图片打包,不破坏任何图片的格式,drawRGB则是以RGB格式保存图片的象素信息。前者比较容易,除了PNG以外,有的手机还支持GIF,JPG等格式,只要保证图片格式正确就可以了。后者稍微麻烦一些,因为形成的RGB象素信息的数组很大,有的还经过压缩,因此准确的替换会比较困难。

写在程序里的字符串。处理方法也很简单,反编译源文件之后替换相应的字符串就ok了。别问我什么是反编译,这贴里不讲编译原理。再详细的说一下,有2条路,第一就是直接修改class文件。直接把汉字写在源程序里的话,生成的class文件里的汉字字符串应该是标准的utf8编码,一个简单的做法就是自己编译一个写好中文字符串的java文件,再把生成的class文件里面对应的字节copy到原class文件里。第二就是反编译之后生成的java文件,由于扰码的原因,会有地方编译不过,一般是因为反编译后生成的文件有问题。由于扰码工具的不同,存在的问题也不一样。有的地方没有反编译成功,还有的地方使用了伪汇编指令(如goto等),有的构造函数的名称被隐藏等等,还有的扰码工具还会故意增加不合理代码来给反编译设置陷阱,因此就得进行很麻烦的修改。当然改来改去也就是那么几种错误,就是很麻烦。扰码和反编译技术是一魔一道,没有万全之策。总之在没有彻底排除扰码的干扰的时候,不推荐用这种方法。

写在外部数据里的字符串。如果这个游戏的程序结构好的话,所有的字符串都应该是放在外部的某个文件里的。不知道是哪个文件的话,直接把所有文件都用文本编辑器打开查看就能发现储存字符串的文件。很多游戏都是用readUTF()这个通用函数来读取文件中的数据的。因此确保所用的新字符串都是utf-8编码,由于没有原xml文件来重新生成这个数据文件,可能需要通过替换字符串的16进制编码才能正确的替换原来的字符串。一般的说,uft-8每个字符比Unicode大一个字节,因此替换完成的字符串文件可能会比原来要大一点。如果不是utf8格式,也有可能是unicode或其他格式,但如果程序本身都没有考虑到多字节文本的读入,那么除非修改源代码否则是无法解决的。

java rgb是什么格式 java实现提取图片每一点的RGB

到此基本上大功告成,替换这些字符串所带来的jar大小和游戏运行时内存的变化可以忽略不计。最后一步,请确认要运行此程序的手机支持中文。

总之,没有自带字库真是一件让人高兴的事。拿到一个GBA rom,第一件事就是破解,但拿到一个手机游戏呢?直接解开查看各文件就是了。做一个GBA汉化,至少需要破解,翻译,美术,而做一个手机汉化呢,文本量不大,图片不多,一个人足够。还有最重要的一点,国内没有一家GBA游戏制作公司,想玩到中文游戏只能靠fans自己动手,但是手机游戏的游戏正相反,国内的制作公司很多。但尽管如此,大部分的中文游戏仍然是纯粹的垃圾,和国外的大牌公司制作的游戏相比真是不堪一击。

java:image.ImageIO类的getRGB()方法,返回的是什么

java:image.ImageIO类的getRGB()方法返回的是一个整型数据。

这个方法可以从图片的指定区域读取ARGB像素值,并存储到rgbData数组中,rgbData中的数据是以0xAARRGGBB格式存储的,代表每个像素的颜色属性和透明属性。返回值就是RGB色彩。

RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。

java实现提取图片每一点的RGB

public class TestActionAction extends Action{

public void doSome(){

try{

//

//ImageIO.read("http://210.75.193.191:8080/Vector/4/3728/1275.png");

ImageIcon[] image={new ImageIcon("G://公司项目/Images/Map/157.png"),new ImageIcon("G://公司项目/Images/Map/158.png"),new ImageIcon("G://公司项目/Images/Map/159.png"),new ImageIcon("G://公司项目/Images/Map/160.png")};

//BufferedImage相当于一个画布,在存在于内存中

BufferedImage img=new BufferedImage((image.length)*256,256,BufferedImage.TYPE_INT_RGB);

//必须创建Graphics2D对象和drawImage,不然画出来的只是image.getIconWidth*image.getIconHeight()那么大一个全黑图像

Graphics2D gs=(Graphics2D)img.getGraphics();

for(int i=0;i<image.length;i++){

String k="";

gs.

}

gs.drawImage(image[0].getImage(), 0, 0, image[0].getImageObserver());

int huabuwid=img.getWidth();

int huabuhid=img.getHeight();

for(int i=0;i<huabuwid;i++){

for(int j=0;j<huabuhid;j++){

//基于坐标取出相对应的RGB

int rgb=img.getRGB(i, j);

int R=(rgb& 0xff0000)>> 16;

int G=(rgb& 0xff00)>> 8;

int B=(rgb& 0xff);

rgb=((R*256)+G)*256+B;

//把RGB值设置进相对应的坐标

img.setRGB(i, j, rgb);

}

}

gs.drawImage(image[1].getImage(), 256, 0, image[1].getImageObserver());

for(int i=0;i<huabuwid;i++){

for(int j=0;j<huabuhid;j++){

//基于坐标取出相对应的RGB

int rgb=img.getRGB(i, j);

int R=(rgb& 0xff0000)>> 16;

int G=(rgb& 0xff00)>> 8;

int B=(rgb& 0xff);

rgb=((R*256)+G)*256+B;

//把RGB值设置进相对应的坐标

img.setRGB(i, j, rgb);

}

}

gs.drawImage(image[2].getImage(), 512, 0, image[2].getImageObserver());

for(int i=0;i<huabuwid;i++){

for(int j=0;j<huabuhid;j++){

//基于坐标取出相对应的RGB

int rgb=img.getRGB(i, j);

int R=(rgb& 0xff0000)>> 16;

int G=(rgb& 0xff00)>> 8;

int B=(rgb& 0xff);

rgb=((R*256)+G)*256+B;

//把RGB值设置进相对应的坐标

img.setRGB(i, j, rgb);

}

}

gs.drawImage(image[3].getImage(), 768, 0, image[3].getImageObserver());

for(int i=0;i<huabuwid;i++){

for(int j=0;j<huabuhid;j++){

//基于坐标取出相对应的RGB

int rgb=img.getRGB(i, j);

int R=(rgb& 0xff0000)>> 16;

int G=(rgb& 0xff00)>> 8;

int B=(rgb& 0xff);

rgb=((R*256)+G)*256+B;

//把RGB值设置进相对应的坐标

img.setRGB(i, j, rgb);

}

}

//释放Graphics2D对象

gs.dispose();

//以流的方式保存文件

FileOutputStream outfile= new FileOutputStream("G:/1.png");

ImageOutputStream i=ImageIO.createImageOutputStream(outfile);

ImageIO.write(img,"png", i);

} catch(FileNotFoundException e){

// TODO Auto-generated catch block

e.printStackTrace();

} catch(IOException e){

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void main(String[] args){

new TestActionAction().doSome();

}

}

java rgb是什么格式和java实现提取图片每一点的RGB的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

用什么查看java源码 什么是java源代码 怎么查看 雪中悍刀行剑九黄(雪中悍刀行剑九黄演员)