Libgdx: 將Texturepacker打包的PNG圖片還原成一張一張的單個的,

來源:互聯網
上載者:User

Libgdx: 將Texturepacker打包的PNG圖片還原成一張一張的單個的,

你是否發現用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<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';elseh=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 請大家支援。 支援單機雙人三人聯機、

叫做 Wifi鬥地主

地址點擊開啟連結http://www.wandoujia.com/apps/com.hj.joker






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.