Java TGA加载器 [英] Java TGA loader
本文介绍了Java TGA加载器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在为java寻找一个小而免费的TGA图像加载类或库。
理想情况下,结果是BufferedImage。
I am looking for a small and free TGA image loading class or library for java. Ideally the result is a BufferedImage.
是的,我已经google了,但是大多数结果已经过时,或者是包含很多其他内容的相当大的库我不需要的东西。我正在寻找一些简单易读的TGA图像。
Yes, I have already googled, but most results are outdated, or are quite big libraries that contain a lot of other stuff i dont need. I am looking for something small and simple that reads just TGA images.
谢谢!
推荐答案
我们使用从某个开源项目复制的这个类来读取TGA文件。它真的很老了。它只能处理具有最基本编码的Targa文件。试一试。
We use this class copied from some open source project to read TGA files. It's really old. It can only handle Targa files with most basic encoding. Give it a try.
public class TargaReader
{
public static Image getImage(String fileName) throws IOException
{
File f = new File(fileName);
byte[] buf = new byte[(int)f.length()];
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
bis.read(buf);
bis.close();
return decode(buf);
}
private static int offset;
private static int btoi(byte b)
{
int a = b;
return (a<0?256+a:a);
}
private static int read(byte[] buf)
{
return btoi(buf[offset++]);
}
public static Image decode(byte[] buf) throws IOException
{
offset = 0;
// Reading header
for (int i=0;i<12;i++)
read(buf);
int width = read(buf)+(read(buf)<<8);
int height = read(buf)+(read(buf)<<8);
read(buf);
read(buf);
// Reading data
int n = width*height;
int[] pixels = new int[n];
int idx=0;
while (n>0)
{
int nb = read(buf);
if ((nb&0x80)==0)
{
for (int i=0;i<=nb;i++)
{
int b = read(buf);
int g = read(buf);
int r = read(buf);
pixels[idx++] = 0xff000000 | (r<<16) | (g<<8) | b;
}
}
else
{
nb &= 0x7f;
int b = read(buf);
int g = read(buf);
int r = read(buf);
int v = 0xff000000 | (r<<16) | (g<<8) | b;
for (int i=0;i<=nb;i++)
pixels[idx++] = v;
}
n-=nb+1;
}
BufferedImage bimg = new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);
bimg.setRGB(0,0,width,height,pixels,0,width);
return bimg;
}
}
这篇关于Java TGA加载器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文