你是否发现用Texturepacker在打包压缩资源文件之后。把原稿文件弄丢了,但是又要增加新的小png的时候,却无从下手了,本文就是博主在遇到这个问题后百度了很多方法,可惜只有plist格式的方法,libgdx的几乎没有。反正我是没找到,于是自己就写了一个。
打包生成的有两个文件
一个是**.txt 一个是**.png(有些不是txt是.pack 只要内容一样就行,你用记事本打开看看)
其中txt记录位置等参数信息. png是一张大图
card.png
format: RGBA8888
filter: Linear,Linear
repeat: none
c36
rotate: false
xy: 2, 550
size: 63, 86
orig: 63, 86
offset: 0, 0
index: -1
btn1
rotate: false
xy: 644, 2
size: 156, 57
orig: 156, 57
offset: 0, 0
index: -1
c41
rotate: false
xy: 392, 550
size: 63, 86
orig: 63, 86
offset: 0, 0
index: -1
上面是位置信息文件。
下面用java根据这个文件将大图还原成小图
public static void toPNG(String pathTxt,String pathPNG,String OUT)
{
ArrayList<String> name=new ArrayList<String>();
ArrayList<String> xy=new ArrayList<String>();
ArrayList<String> size=new ArrayList<String>();
try {
String encoding = "GBK";
File file = new File(pathTxt);
if (file.isFile() && file.exists()) { // 判断文件是否存在
InputStreamReader read = new InputStreamReader(
new FileInputStream(file), encoding);// 考虑到编码格式
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
int lineNum=0,lineNum2=0;
while ((lineTxt = bufferedReader.readLine()) != null) {
lineNum++;
if(lineNum2>0)
lineNum2++;
if(lineNum==5)
lineNum2=1;
if(lineNum%7==5)
name.add(lineTxt);
if(lineNum2%7==3)
xy.add(lineTxt);
if(lineNum2%7==4)
size.add(lineTxt);
}
read.close();
} else {
System.out.println("找不到指定的文件");
}
BufferedImage image = (BufferedImage)ImageIO.read(new File(pathPNG));
for(int i=0;i<name.size();i++)
{
String p1=name.get(i),p2=xy.get(i),p3=size.get(i);
int x=0,y=0,w=0,h=0,flag=0;
for(int j=0;j<p2.length();j++)
{
if(p2.charAt(j)<='9' && p2.charAt(j)>='0' )
{
if(flag==0)
{
x=x*10+p2.charAt(j)-'0';
}
else
{
y=y*10+p2.charAt(j)-'0';
}
}
if(p2.charAt(j)==',')
flag=1;
}
flag=0;
for(int j=0;j<p3.length();j++)
{
if(p3.charAt(j)<='9' && p3.charAt(j)>='0' )
{
if(flag==0)
w=w*10+p3.charAt(j)-'0';
else
h=h*10+p3.charAt(j)-'0';
}
if(p3.charAt(j)==',')
flag=1;
}
File f=new File(OUT);
if(!f.exists())
f.mkdirs();
ImageIO.write(image.getSubimage(x,y,w,h),"png",new FileOutputStream(OUT+"/"+p1+".png"));
System.out.println(p1+":finished");
}
} catch (Exception e) {
System.out.println("读取文件内容出错");
e.printStackTrace();
}
}
本文原创网址转载必须注明:
http://blog.csdn.net/cq361106306/article/details/38036737
使用方法。直接调用
toPNG("d:/card.txt","d:/card.png","d:/s");
第一个参数是文本参数文件,不一定是txt后缀。不同软件生成不一样,只要用记事本打开内容跟上面那个txt一样就行。
第二个参数是大图文件
第三个参数是输出的地方。最后面不要再加"/"了;路径是自动创建的
我这里是测试成功的。如有疑问请留言
打个小广告
我的斗地主APP 请大家支持。 支持单机双人三人联机、
地址 安卓市场 木蚂蚁市场
分享到:
相关推荐
Learn to design and create video games using the Java programming language and the LibGDX software library. Working through the examples in this book, you will create 12 game prototypes in a variety ...
将指定目录下小图片打包成atlas大图片
libgdx 有一个 TexturePacker2 类,它是一个命令行应用程序,可将许多较小的图像打包成较大的图像。 它存储较小图像的位置,以便使用 TextureAtlas 类在您的应用程序中通过名称轻松引用它们。 此外,在某些图形卡中...
子图合并为大图软件: 1、将所有子图放入文件夹input中 2、双击 "启动.bat" 即可将子图,合并为一张大图 "combine\image.png
分割libgdx Texturepacker打包的大图为小图
LibGDX纹理打包工具3.2.0,gdx-texturepacker-3.2.0
libgdx LibGDX教程
Libgdx TexturePacker 肥肥汉化版(基于v3.2),基于官方v3.2进行汉化的版本。
有一个带有GUI的商业打包器和一个围绕libGDX的TexturePacker的较旧的包装器,但是最近没有一个为libGDX打包纹理的包装器同时具有GUI和$ 0的价格标签。 这是尝试使用libGDX的代码作为基础来改变这种情况。 用法 该...
libgdx TexturePackerTest
awesome-libgdx:精选的libGDX资源列表,可帮助开发人员制作出色的游戏
Mario Bros与libGDX 使用libGDX库的超级马里奥兄弟1等平台游戏 先决条件 Git 2.6+ Gradle2.11+ Java 8+ 怎么玩 克隆 git clone https://github.com/humbertodias/game-mario-bros-libgdx.git 里面的文件夹 cd ...
顾名思义,flash4libgdx是libgdx游戏引擎的Flash动画包。 如何使用? 它的文献记录不多...也许您可以阅读示例。 概念 视口 窗户 视口中心 帆布 转换点 在FAnimation的构造函数中,您至少需要指定一个视口区域或一...
Amballah-libgdx 2D libgdx游戏 屏幕截图: 资产 背景资料 火 敌人 人物 音轨视频剪辑
TexturePacker是一款把若干资源图片拼接为一张大图的工具。网页设计师前台制作css的时候,为了提高载入速度,往往把很多小图拼接成一张大图,一次载入,减少I/O,提高速度。这个好懂吧。 所以不管怎么样,“拼大图”...
LibGDX 我的 LibGDX 仓库
hex-libgdx 带有六边形瓷砖的 Libgdx 原型。 比赛状态 六边形瓷砖实施 基本实体租用已实施 实施碰撞运动 实现了回合制系统 处理瓷砖之间的平滑过渡,目前非常有问题并已注释掉
你好libgdx FIXME:说明 安装 从下载。 用法 FIXME:说明 $ java -jar hello-libgdx-0.1.0-standalone.jar [args] 选项 FIXME:此应用程序接受的选项列表。 例子 ... 虫子 ... 任何其他部分 你以为 可能有用 执照 ...
android-libgdx 测试 android-libgdx