有什么软件能批量分割png图片?

kkcpsdc 2017-02-04 11:37:56
有什么软件能批量分割png图片? 如下游戏图片想分割成单个行走图片,如果ps一个一个来搞,工作量实在太大了!
...全文
571 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
勤奋的小游侠 2017-02-09
  • 打赏
  • 举报
回复
汗,切图工具非常多吧。你怎么会在C#版块问这种问题。 这个图就是由小图拼成的大图,搞游戏的人都知道 。 自己百度一下切图工具。
  • 打赏
  • 举报
回复
个人经验,图像操作最好用unsafe代码,性能不夸张地说,经常会提高几百倍。这个确实不是c#的特长,得用c++来做。
kkcpsdc 2017-02-09
  • 打赏
  • 举报
回复
引用 10 楼 3ch0的回复:
用Python试了一下 因为原图不是等分的 所以只能切到这样了


# -*- coding: utf-8 -*-
import os
from PIL import Image

def splitimage(src, rownum, colnum, dstpath):
img = Image.open(src)
w, h = img.size
if rownum <= h and colnum <= w:
print('Original image info: %sx%s, %s, %s' % (w, h, img.format, img.mode))
print('开始处理图片切割, 请稍候...')

s = os.path.split(src)
if dstpath == '':
dstpath = s[0]
fn = s[1].split('.')
basename = fn[0]
ext = fn[-1]

num = 0
rowheight = h // rownum
colwidth = w // colnum
for r in range(rownum):
for c in range(colnum):
box = (c * colwidth, r * rowheight, (c + 1) * colwidth, (r + 1) * rowheight)
img.crop(box).save(os.path.join(dstpath, basename + '_' + str(num) + '.' + ext), ext)
num = num + 1

print('图片切割完毕,共生成 %s 张小图片。' % num)
else:
print('不合法的行列切割参数!')

src = 'C://Users//123//Desktop//a.png'
if os.path.isfile(src):
row = int(input('请输入切割行数:'))
col = int(input('请输入切割列数:'))
if row > 0 and col > 0:
splitimage(src, row, col, '')
else:
print('无效的行列切割参数!')
else:
print('图片文件 %s 不存在!' % src)
10楼的强程序都写出来了
拜一刀 2017-02-09
  • 打赏
  • 举报
回复
为什么要切?游戏里一般都是这样的图啊,应该能直接用的吧?
csdnFUCKINGSUCKS 2017-02-09
  • 打赏
  • 举报
回复
用Python试了一下 因为原图不是等分的 所以只能切到这样了


# -*- coding: utf-8 -*-
import os
from PIL import Image

def splitimage(src, rownum, colnum, dstpath):
img = Image.open(src)
w, h = img.size
if rownum <= h and colnum <= w:
print('Original image info: %sx%s, %s, %s' % (w, h, img.format, img.mode))
print('开始处理图片切割, 请稍候...')

s = os.path.split(src)
if dstpath == '':
dstpath = s[0]
fn = s[1].split('.')
basename = fn[0]
ext = fn[-1]

num = 0
rowheight = h // rownum
colwidth = w // colnum
for r in range(rownum):
for c in range(colnum):
box = (c * colwidth, r * rowheight, (c + 1) * colwidth, (r + 1) * rowheight)
img.crop(box).save(os.path.join(dstpath, basename + '_' + str(num) + '.' + ext), ext)
num = num + 1

print('图片切割完毕,共生成 %s 张小图片。' % num)
else:
print('不合法的行列切割参数!')

src = 'C://Users//123//Desktop//a.png'
if os.path.isfile(src):
row = int(input('请输入切割行数:'))
col = int(input('请输入切割列数:'))
if row > 0 and col > 0:
splitimage(src, row, col, '')
else:
print('无效的行列切割参数!')
else:
print('图片文件 %s 不存在!' % src)
wanghui0380 2017-02-09
  • 打赏
  • 举报
回复
额,貌似多余了,人家那么做就是有原因的 如果你不知道,那么请百度“游戏sprite”,然后在Goolge"C# game sprite"
白衣如花 2017-02-09
  • 打赏
  • 举报
回复
使我想起传奇的基本图片,一张张静态小图,合成各种行走,跑步,攻击的动态图
Poopaye 2017-02-04
  • 打赏
  • 举报
回复
一般不都是uv动画么,怎么还要分割
gfpnihao 2017-02-04
  • 打赏
  • 举报
回复
可以考虑 从大图里获取局部图片的思路 参考:http://blog.csdn.net/sdpdww/article/details/51706537
assky124 2017-02-04
  • 打赏
  • 举报
回复
PS不是有自动切片的功能么
  • 打赏
  • 举报
回复
写上几行代码就行了。 而且,通常并不“分割成文件”,而是直接从这个大图动态取得局部图片(缓存在内存中)即可。
卧_槽 2017-02-04
  • 打赏
  • 举报
回复
自己写一个分分钟的事情

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧