你是否发现用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 请大家支持。

支持单机双人三人联机、

地址  安卓市场 木蚂蚁市场

Libgdx: 将Texturepacker打包的PNG图片还原成一张一张的单个的的更多相关文章

  1. texturepacker打包图片,场景切换时背景图有黑边

    在使用TexturePacker打包图片之后,背景图在场景切换(有切换动画)时,明显能看到有黑边,在百度之后解决了. 知乎上边有网友贴出了两种解决方法,我抄过来如下: 第一种: 修改 ccConfig ...

  2. 如何用TexturePacker打包素材

    如何用TexturePacker打包素材 TexturePacker是一个非常好用的图片素材打包工具,它能帮助你减少游戏的图片内存使用. 官方下载地址:http://www.codeandweb.co ...

  3. [.ashx檔?泛型处理程序?]基础入门#5....ADO.NET 与 将DB里面的二进制图片还原 (范例下载 & 大型控件的ImageField)

    [.ashx檔?泛型处理程序?]基础入门#5....ADO.NET 与 将DB里面的二进制图片还原 (范例下载 & 大型控件的ImageField) http://www.dotblogs.c ...

  4. [.ashx檔?泛型处理例程?]基础入门#3....ADO.NET 与 将DB里面的二进制图片还原

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/20/ashx_beginner_03_db_picture_show.aspx ...

  5. vue+webpack项目打包后背景图片加载不出来问题解决

    在做VUE +的WebPack脚手架项目打包完成后,在IIS服务器上运行发现项目中的背景图片加载不出来检查项目代码发现是因为CSS文件中,背景图片引用的路径问题;后来通过修改配置文件,问题终于解决了, ...

  6. pyinstaller打包程序 带图片

    首选说一下,这种打包方式只能在本电脑上使用运行正常 准备:.py文件:你的程序 gif文件:你要用的图片 第一步: 在上面文件所在目录打开cmd 输入 pyi-makespec FP.py 会生成一个 ...

  7. Vue项目打包后背景图片路径错误

    vue项目打包之后背景图片出错的解决方案如下: 1,找到 config->index.js里面,如下修改 默认配置: env: require('./prod.env'), index: pat ...

  8. Js逆向-滑动验证码图片还原

    本文列举两个例子:某象和某验的滑动验证 一.某验:aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby9zbGlkZS1mbG9hdC5odG1s 未还原图像: 还原后的图: ...

  9. Centos-重定向方式打包、备份、还原、恢复工具-cpio

    cpio 通过重定向方式将文件进行打包.备份.还原.恢复工具,扩展名为 .cpio 相关选项 -o 将文件复制.打包成文件或将将文件输出到标准输出 -i  将打包文件或者将设备上的备份还原到系统中 - ...

随机推荐

  1. Python 学习入门(20)—— 循环

    1. for 循环 for循环需要预先设定好循环的次数(n),然后执行隶属于for的语句n次. 基本构造是 for 元素 in 序列: statement 举例来说,我们编辑一个叫forDemo.py ...

  2. HTML5 实现拖拽

    如图 可以从第一个方框拖拽花色到第二个方框中. 也可以再拖动回来. 具体代码实现 index.html <!DOCTYPE HTML> <html> <head> ...

  3. 超越Web,Javascript在物联网的应用

    引子 Patrick Catanzariti 是一名Web开发project师,近期他在 sitepoint 发表了<JavaScript Beyond the Web in 2014>, ...

  4. oracle RAC搭建中的潜规则 该死的app

    oracle RAC 安装目录必须是 ORACLE_BASE=/u01/app/grid ORACLE_HOME=/u01/app/11.2.0/grid 看着中间有个app,又没什么实际用处,就删掉 ...

  5. Nubia Z5S 基于官方H207/4.4内核的Mokee4.4.4 RC3.2 (2014.7.31修复呼吸灯(能亮依旧不能呼吸))

    特别感谢 yun3195 和 轻描淡写Yhw  帮忙測试 转帖请务必注明本链接地址: http://blog.csdn.net/syhost/article/details/36444259 此ROM ...

  6. 用"池"来提升对象的复用

    对象池化是目前常用的一种系统优化的技术.通俗的说也就是一个对象不用多次的被实例化,来消耗性能,可以把这些常用的类放入一个池中,当需要的时候在去池里去拿去,不用的时候 在放入池中.可以叫做对象池.他可以 ...

  7. 所有CN_消息的说明

    Notification Message Corresponding WindowsConstant Message Description cn_CharToItem wm_CharToItem T ...

  8. JSCapture实现屏幕捕捉

    JSCapture 是用纯 JavaScript 和 HTML5 实现的屏幕捕捉库. 能够随意在浏览器或者桌面视频进行截图, JSCapture 使用 getUserMedia 来实现屏幕捕获. 当前 ...

  9. iOS视图控制器之间delegate传值教程

    之前在StackOverFlow上看到一篇讲传值(segue传值和delegate传值)的文章,感觉讲的非常清晰,就将delegate部分翻译了一下.有兴趣能够看看. 原文: http://stack ...

  10. codeforces 598D Igor In the Museum

    题目链接:http://codeforces.com/problemset/problem/598/D 题目分类:dfs 题目分析:处理的时候一次处理一片而不是一个,不然会超时 代码: #includ ...