大图片上的像素风格游戏图片分割
这是一个我在博客园也写了的文章,很简单的一个小程序,涉及到python的matplotlib的画布转图片保存,以及控制图像大小的一些问题。
近期在B站答应了帮人切割一匹像素游戏图片:
这是一张PNG图,我需要将图中的独立的图像帧切割成一样大小,同事保证图像要在中间。
还好,图片之间挺规律的,使用熟悉的Python处理一下应该可以我的想法是这样的:
先删除掉整行整列,得到一个图像紧凑的图片。
PNG图片在程序里打开居然是RPG像素点和灰度值,这个倒是在我的知识之外。
对整行整列进行判断,在网上查了一下,使用线性代数的奇异值比较好。
奇异值是将一个大的矩阵用三个小矩阵表示:
from PIL import Image
import numpy as np
import osfolder_url = './'file_list = os.listdir(folder_url)
pic = np.array(Image.open(folder_url + file_list[0]))
pic = pic[0:120,0:120]
print(pic.shape)
col = pic[:,0]
print(col)
u, s, vh = np.linalg.svd(col)
print(s)
这个是输出:
(120, 120, 4)
[[255 255 255 0][255 255 255 0][255 255 255 0]
...[255 255 255 0][255 255 255 0]]
[4.83828482e+03 6.69772121e-13 3.66435383e-29 0.00000000e+00]
其实写到这里的时候就卡住了,将图像中空白的行和列删除的代还没没写出来,我就看到了这种图片:
这种技能特效在图像中进项上面所说的切割的话肯定会被破坏掉,所以只能手动切割了,还要计算图像的大小。
最后的程序用了TensorFlow进行数据切割,将大的PNG数据切割成小块的张量数组,使用的matplotlib的画布来保存。
我本来也想用OpenCV,Bug多多放弃了,因为保存的PNG小图像帧有条纹背景!
import tensorflow as tf
import matplotlib.pyplot as plt
import osfolder_url = './'file_list = os.listdir(folder_url)
print(file_list)
#保存路径
min_pic_name = file_list[0].split('.')[0]
save_url= './Pic-ed/' + min_pic_name + '/'#读取图像
pic1_data = tf.io.read_file(folder_url + file_list[0])
pic_tensor = tf.image.decode_png(pic1_data)
#图像裁切,因为图像数据不统一,这里只能手动设置
pic_tensor = pic_tensor[11:1011,0:700]#设置画板样式
plt.figure(figsize=(8,8))
plt.box(False)
plt.gca().axes.get_yaxis().set_visible(False)
plt.gca().axes.get_xaxis().set_visible(False)pic_list = []
h = pic_tensor.shape[0]
w = pic_tensor.shape[1]
min_w = 100 #图像宽度
min_h = 100 #图像高度for x in range(0, int(w/min_w)):temp_list = []pic_col = pic_tensor[:, x*min_w:(x+1)*min_w] #取一列图像for y in range(0, int(h/min_h)):min_pic = pic_col[y*min_h:(y+1)*min_h, :] #取一小张图像plt.imshow(min_pic) #绘制在画布上temp_list.append(min_pic)#保存图像,这里可以设置图像的质量plt.savefig(save_url + min_pic_name +"{}.png".format(str(x+1) + '_' + str(y+1)),transparent=True) #清除画板内容plt.clf()#重新设置画板样式plt.box(False)plt.gca().axes.get_yaxis().set_visible(False)plt.gca().axes.get_xaxis().set_visible(False)pic_list.append(temp_list)
其实又渣又烂的程序,还有bug……
这是切割后的效果:
没做过游戏,看到这些一帧帧的刷动画动起来还是挺惊艳的。
大图片上的像素风格游戏图片分割相关推荐
- 如何在大屏幕上滚动播放视频、图片和文字
传统方法 在各种大屏上滚动播放视频.图片和文字的方法通常有如下两种: 1)使用视频播放软件,创建播放列表进行播放 2)使用信息发布系统,创建播放列表进行播放 第1种方法相对比较Low,需要到连接屏幕的 ...
- 如何去掉图片上的水印而不损图片
平时不管是发朋友圈还是发布自媒体,都需要图片的结合,而很多图片我们都是来自百度,但是有一点不好的就是很多图片中都会有水印的存在,给我们的视觉效果会有一定的影响,所以就想着将图片中的水印去掉,平时大多数 ...
- 实验二(1)——8bit像素深度bmp图片与24bit像素深度bmp图片互转2021-03-20
一.实验要求 编写8bit像素深度bmp图片与24bit像素深度bmp图片互相转换的程序,将给定的8bitbmp图片和24bitbmp图片分别转换为24bitbmp图片和8bitbmp图片,其中24b ...
- themyleaf 图片上传_javaEE --springboot #实现图片上传和回显 #单文件上传 #多文件上传 #ajax异步文件上传 (非常详细,从创建项目开始)...
实现文件上传和回显 1.新建一个SpringBoot项目,选择 Spring Web 和 thymeleaf 依赖 .pow.xml文件下的依赖如下 2.根据下图,创建如下文件 3.直接上代码 配置文 ...
- 壁纸图片|2020年12月游戏图片大全
2020年12月游戏图片大全 高图整理搜集了2020年12月发售游戏图片大全.包括热门游戏图片.游戏封面图片.游戏内容图片.电影类别分为动作游戏.竞速游戏.冒险游戏.模拟游戏.策略游戏,角色扮演游戏, ...
- php 更改图片后缀名,PHP在图片上传时如何改变图片后缀为jpg
PHP在图片上传时改变图片后缀为jpg的方法:首先获取上传的图片后缀,并获取图片在电脑上的临时存储位置:然后获取临时存储文件的后缀:最后实现后缀转换,代码为[case 'im{ / S # p |ag ...
- **微信小程序图片上传+后台PHP修改图片名称**
微信小程序图片上传+后台PHP修改图片名称 前端代码:比较随意 <view class="weui-uploader"><view class="img ...
- antd 图片上传遇到的坑----图片回显(Upload)
antd 图片上传遇到的坑----图片回显(Upload) 最近又被安排了一个前端的项目,遇到了一个图片上传的问题,用的是antd的Upload组件,在这遇到的问题和大家分享一下,下网可以帮到需要的人 ...
- jsp图片上传提交前,图片显示在页面上
<divclass="upload_box"> <b>上传图片</b> <inputtype="file"name=& ...
最新文章
- python导入哨兵数据_Python 下载哨兵Sentinel数据(Sentinel-1~3)
- java数组元素相加_数组元素相加
- matlab画图模糊,[转载]matlab中模糊工具箱的使用
- LeetCode 1686. 石子游戏 VI(贪心)
- ajax 请求_你了解前端出现Ajax跨域请求的原因吗?
- 阅读java文件_阅读与阅读写文件 - Java空格
- linux配置libpng环境变量_不同操作系统下 jdk 的配置
- 居民安装光伏系统常会碰壁 怎么样做才能少走弯路?
- win7卸载显卡及对应驱动后桌面分辨率不对以及鼠标键盘无反应
- mysql 5.0创建函数_MySQL5.0中的Function和Procedure
- C++随机数生成器(default_random_engine)
- 切比雪夫多项式MATLAB绘图
- docker安装镜像
- 4、网络嗅探器的设计与实现
- 【文件监控】之一:理解 ReadDirectoryChangesW part1
- Android软件开发面试题,安卓面试题库
- Java中RGBtoHSB_HSV/HSB颜色排序列表
- 在线制作banner的网站
- 如果机器可以深度学习,人类的学习有何意义
- 数据预处理之数据清洗
热门文章
- FreeMarker自定义标签编写
- Ansible几个常用模块
- python自动化测试生成报告_使用python测试框架完成自动化测试并生成报告-实例练习...
- GPFS和Lustre之后,还有谁来接盘?
- 简易扑克牌游戏JAVA源码_新手上路
- 中医公布身体6个“救命”穴位
- 红外海洋目标检测实践,基于目标检测模型识别红外海洋目标
- c语言 压缩txt文件的函数,c语言 文本文件压缩
- 2021年三个季度的监控摄像头品牌排名
- 封装Vue倒计时组件vuecountdown(详细教程)