Libgdx:将TexturePacker打包的大图分割成小图片

你是否发现用Texturepacker在打包压缩资源文件之后。把原稿文件弄丢了,但是又要增加新的小png的时候,却无从下手了?或者你在借用其他游戏资源时,不知道哪个图片对应哪个名字。

打包生成的有两个文件

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

下面为代码:

package com.ll;

import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

import javax.imageio.ImageIO;

public class SpliPng {

public static void main(String[] args) {
// TODO Auto-generated method stub
String parentPath = "/Users/haocao/SplitPng/";
// txt.png文件所在的文件夹
String gameFileName = "slots";

File file = new File(parentPath + gameFileName);
String[] nameStrings = file.list();
for (String nameString : nameStrings) {
if (nameString.contains(".txt")) {
String tmpNameString = nameString.substring(0, nameString.lastIndexOf("."));

System.out.println("分割:" + tmpNameString);

String targetFileName = tmpNameString;
String pathTxt = parentPath + gameFileName + "/" + targetFileName + ".txt";
String pathPNG = parentPath + gameFileName + "/" + targetFileName + ".png";
String outPath = parentPath + gameFileName + "/" + targetFileName;
toPNG(pathTxt, pathPNG, outPath);
}
}

System.out.println("全部结束");
}

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) {
if (lineTxt.length() > 0) {
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.getLocalizedMessage());
e.printStackTrace();
}

}
}
时间: 2025-01-15 15:33:14

Libgdx:将TexturePacker打包的大图分割成小图片的相关文章

Css调整图片大小[将大图片压缩成小图片]

<div style="width:设置宽px; height:设置高px; background-image: url('图片路径'); filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='图片路径',sizingMethod='scale'); float:left;background-size:设置宽px 设置高px;"> </div> 采用滤镜[filter]效果,实现大图片压缩

Libgdx: 将Texturepacker打包的PNG图片还原成一张一张的单个的

你是否发现用Texturepacker在打包压缩资源文件之后.把原稿文件弄丢了,但是又要增加新的小png的时候,却无从下手了,本文就是博主在遇到这个问题后百度了很多方法,可惜只有plist格式的方法,libgdx的几乎没有.反正我是没找到,于是自己就写了一个. 打包生成的有两个文件 一个是**.txt  一个是**.png(有些不是txt是.pack 只要内容一样就行,你用记事本打开看看) 其中txt记录位置等参数信息. png是一张大图 card.png format: RGBA8888 fi

linux文件分割(将大的日志文件分割成小的)

linux下文件分割可以通过split命令来实现,可以指定按行数分割和安大小分割两种模式.Linux下文件合并可以通过cat命令来实现,非常简单. 在Linux下用split进行文件分割: 模式一:指定分割后文件行数 对与txt文本文件,可以通过指定分割后文件的行数来进行文件分割. 命令:split -l 300 large_file.txt new_file_prefix 模式二:指定分割后文件大小 split -b 10m server.log waynelog 对二进制文件我们同样也可以按

cocos2dx中如何从一张图片中切割一部分显示成小图片

1.通常我们拿到的资源中,通常都是许多张小图片压缩到一张图片里了,我们如何在使用的时候把它切割出来呢? 2.例如我们要把上面这张图片按组分隔开来 CCSprite* newGameNormal = CCSprite::create(s_menu, CCRectMake(0, 0, 126, 33)); CCSprite* newGameSelected = CCSprite::create(s_menu, CCRectMake(0, 33, 126, 33)); CCSprite* newGam

滤镜实现图片大小[可以将大图片压缩成小图片]

<div style="width:设置宽px; height:设置高px; background-image: url('图片路径');filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='图片路径',sizingMethod='scale');float:left;background-size:设置宽px 设置高px;">

Libgdx TexturePacker大图分割为小图

如何将TexturePacker打包的大图还原为之前的小图呢?下面的算法帮你轻松实现! import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.util.A

TexturePacker大图还原成小图工具带源码

TexturePacker是一个把好多小图打成大图的软件,生成的是大图以及小图在大图位置的.plist描述文件,但是不支持把大图还原成小图.网上偷的图一般都是大图和plist,想得到小图比较麻烦,于是乎用python写了个TexturePacker反向工具,把大图导成小图. 1.python要用到的库 python的图片处理要用到PIL(Python Image Library),mac10.10下安装PIL会报 fatal error: 'X11/Xlib.h' file not found的

Texture的渲染大图裁剪成小图并保存下来

我们今天就简单说下 cocos2d的Texture的简单用法,并将一张大图裁剪成小图并保存起来 我们先准备一张大图,如下: 只看图,表太在意内容啊. 我们的目的就是将这张大图裁剪成一张张的小图并保存下来. 首先,我们要将它裁剪成一张张的小图,小图的大小自己计算哈,我就不告诉你w=Width/5,h=(Height-108)/8的: 然后,将裁剪出来的小图一张张的绘制出来: 最后,将绘制的每一张保存起来. 我怎么这么多话啊,说了这么多,一行代码也写呢,好了,直接上代码: auto size = D

JS中,split()用法(将字符串按指定符号分割成数组)

<!DOCTYPE html> <html> <head> <meta charset="{CHARSET}"> <title></title> </head> <body> </body> <script type="text/javascript"> //在Javascript脚本中,将字符串按指定符号进行分割成数组用split()的方法 //