博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Libgdx: 将Texturepacker打包的PNG图片还原成一张一张的单个的
阅读量:6759 次
发布时间:2019-06-26

本文共 2285 字,大约阅读时间需要 7 分钟。

你是否发现用Texturepacker在打包压缩资源文件之后。

把原稿文件弄丢了,可是又要添加新的小png的时候,却无从下手了,本文就是博主在遇到这个问题后百度了非常多方法,可惜仅仅有plist格式的方法,libgdx的差点儿没有。反正我是没找到,于是自己就写了一个。

打包生成的有两个文件

一个是**.txt  一个是**.png(有些不是txt是.pack 仅仅要内容一样即可,你用记事本打开看看)

当中txt记录位置等參数信息. png是一张大图

card.pngformat: RGBA8888filter: Linear,Linearrepeat: nonec36  rotate: false  xy: 2, 550  size: 63, 86  orig: 63, 86  offset: 0, 0  index: -1btn1  rotate: false  xy: 644, 2  size: 156, 57  orig: 156, 57  offset: 0, 0  index: -1c41  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
name=new ArrayList
(); ArrayList
xy=new ArrayList
(); ArrayList
size=new ArrayList
(); 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
='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
='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(); } }
本文原创网址转载必须注明
用法。

直接调用

toPNG("d:/card.txt","d:/card.png","d:/s");
第一个參数是文本參数文件,不一定是txt后缀。

不同软件生成不一样。仅仅要用记事本打开内容跟上面那个txt一样即可。

第二个參数是大图文件

第三个參数是输出的地方。

最后面不要再加"/"了;路径是自己主动创建的

我这里是測试成功的。

如有疑问请留言

打个小广告

我的斗地主APP 请大家支持。

支持单机双人三人联机、

地址   

你可能感兴趣的文章
JQuery
查看>>
转移python
查看>>
OpenCV---resize
查看>>
聊聊CSS postproccessors
查看>>
T-SQL:GO语句和批处理
查看>>
算法参考资料(更新)
查看>>
Poj 水题
查看>>
php中关于mysqli和mysql区别的一些知识点分析
查看>>
Fiddler的基本介绍
查看>>
Mysql On Mac OS: Remove & Install
查看>>
莫烦大大keras学习Mnist识别(4)-----RNN
查看>>
STL之string插入
查看>>
mac 安装mysql
查看>>
cout internal
查看>>
分巧克力 蓝桥杯
查看>>
项目设计阶段的一些事
查看>>
centos 7 进入图形界面
查看>>
UIWebView
查看>>
贝叶斯分类
查看>>
在java中一种中文问题的解决办法
查看>>