文章目录

  • 一、问题:图片导入Unity被调整成2的N次方
  • 二、设置不转换成2的N次方
  • 三、使用ETC压缩格式,图片宽高必须是4的倍数
  • 四、使用python的PIL库批量修改图片尺寸,确保宽和高是4的倍数
    • 1、PIL下载与安装
    • 2、python代码
    • 3、执行python
    • 4、Unity中没有警告了

一、问题:图片导入Unity被调整成2的N次方

Unity游戏项目中,有很多美术图片,比如界面背景图,一般是独立的一张Texture,图片导入Unity中,会被默认按2的N次方调整大小,如下,原始图分辨率1711*1017

导入Unity中,被自动调整成2048*1024

这会导致图片的精度发生变化,导致原版高清的图片尺寸被压小了(也可能被拉大)。

二、设置不转换成2的N次方

Untiy中,将图片的Non-Power of 2设为None,即可保持图片原始尺寸。

三、使用ETC压缩格式,图片宽高必须是4的倍数

我们使用ETC压缩格式的时候,会发现宽高必须满足是4的倍数,但原始尺寸的宽高不一定是4的倍数,如下,会警告

Only texture with width/height being multiple of 4 can be compressed to  ETC2 format

四、使用python的PIL库批量修改图片尺寸,确保宽和高是4的倍数

我们可以使用python批量修改图片尺寸,确保宽和高是4的倍数,需要用到一个图像处理库:PIL

1、PIL下载与安装

下载地址
https://pypi.org/project/Pillow/#files
根据你的操作系统和python版本,下载对应的PIL版本。比如我是64位win10 ,python 3.6版本

下载完后,通过pip安装PILwhl

pip3 install Pillow-8.0.1-cp37-cp37m-macosx_10_10_x86_64.whl

测试是否安装成功,在pythonimport PIL,没有报错的话,就说明安装成功了。

2、python代码

将下面的python代码保存为resize_bgpic_size.py,放在图片所在的文件夹中。

import os
from PIL import Image
import struct'''
检查并调整bg图片的宽高,确保宽高都是4的倍数,这样才可以使用ETC压缩格式
'''#遍历目录中的png文件
def list_pic(dirpath):for root, dirs, fs in os.walk(dirpath):for f in fs:if f.endswith('.png') or f.endswith('.jpg'):yield os.path.join(root, f)#获取图片实际尺寸
def get_png_size(fpath):with open(fpath, 'rb') as f:f.seek(4*4, 0)return (struct.unpack(">ii", f.read(8)) )#列出宽高不是4的倍数的图片
def list_not_4_pic(dirpath):for f in list_pic(dirpath):w,h = get_png_size(f)if w%4 != 0 or h%4 != 0:yield  f#调整图片的尺寸,确保宽高是4的倍数
def resize_4_pic(dirpath):with open('resize_4_pic.output.log', 'w') as log:for f in list_not_4_pic(dirpath):img = Image.open(f)(w,h) = img.sizenw = (w%4==0) and w or (w + (4-(w%4)))nh = (h%4==0) and h or (h + (4-(h%4)))print( (w, h),'->',(nw,nh), f)log.write("%s | (%d,%d)-> (%d,%d)\n"%(f,w, h,nw,nh))img = img.resize( (nw,nh), Image.ANTIALIAS)img.save(f)if '__main__' == __name__:resize_4_pic('.')

3、执行python

执行resize_bgpic_size.py,最终图片宽高被调整为4的倍数

4、Unity中没有警告了

回到Untiy中,因为我们的图片宽高是4的倍数了,所以没有那句警告了,问题完美解决。

新发的日常小实验——使用python的PIL库批量修改图片尺寸,确保宽和高是4的倍数(Unity、PIL、Pillow、压缩)相关推荐

  1. 新发的日常小实验——Unity UGUI Image图片镜像对称效果(轴对称)

    一.前言 Unity中,为了节省美术资源大小,有些图片会采用镜像对称(轴对称)的方式显示,甚至图片只画1/4,然后通过程序镜像对称补全,那么,在UGUI中如何实现这个效果呢. 二.效果展示 支持左右对 ...

  2. 新发的日常小实验——c#获取windows注册表信息

    文章目录 一.前言 二.打开注册表编辑器 三.使用C#查询注册表信息 一.前言 百度百科:Windows注册表(Registry)实质上是一个庞大的数据库,它存储着下面这些内容:用户计算机软.硬件的有 ...

  3. 新发的日常小实验——VS 2019~2010小助手(Visual Assist X / VA_X)安装与使用(实测可用)

    文章目录 一.前言 二.Visual Assist X下载与安装 三.Visual Assist X的使用 四.愉快地使用Visual Assist X 五.补充:vs各个版本的编译器号对应的vs版本 ...

  4. 新发的日常小实验——使用.NET Reactor对.NET程序进行加壳保护(反编译、加壳、混淆)

    文章目录 一.前言 二.关于.Net Rector 三..Net Rector下载 四..Net Rector的简单使用 1.主界面 2.选择程序及(.exe) 3.Quick Settings(快速 ...

  5. python怎样批量修改文件大小_python:批量修改文件名批量修改图片尺寸

    功能:批量修改图片尺寸 图像的几何变换,如缩放.旋转和翻转等,在图像处理中扮演着重要的角色,python中的Image类分别提供了这些操作的接口函数,下面进行逐一介绍. 1.图像的缩放 图像的缩放使用 ...

  6. Python用img2pdf库批量转换图片为PDF文件

    Python用img2pdf库批量转换图片为PDF文件 import os #导入os库 import time #导入时间库生成时间戳 import img2pdf #导入img2pdf库, 安装命 ...

  7. 每天一个小程序——第 0005 题:批量修改图片尺寸,使之不超过 iPhone5 分辨率

    *PIL为第三方库,需要自行安装. # -*- coding: utf-8 -*- """ 第 0005 题:你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPh ...

  8. python实现批量修改图片尺寸和图片名称

    图片尺寸修改: import os from PIL import Imagefilename = os.listdir("D:\\Process\\old") base_dir ...

  9. 用Python批量修改图片名称(后缀)

    当我们需要修改批量即几百幅图片的名称或后缀时,如果一个一个图片名称去重命名或是修改的话工作量就会很大.作为一名程序员,当然是要通过代码去解决这些繁琐的事情.下面是用python代码来实现批量修改图片名 ...

最新文章

  1. C语言再学习 -- 再论数组和指针
  2. SpringBoot 配置记录
  3. 图片数字型的九九乘法表
  4. (转)淘淘商城系列——VMware添加已配置好的虚拟机
  5. 利用组策略管理器映射网络驱动器的方法
  6. 3张经典人事管理模板,HR都直呼很好用
  7. 1.Shell 编程从入门到精通 --- 第一个 Shell 程序
  8. Mac安装Consolas字体最简单的方法
  9. weui 开发文档
  10. 惯导系统测试方法及测试系统
  11. STM32-CAN通信协议
  12. 把mysql数据展示为图表_怎么从数据库中调出数据并生成动态图表?
  13. servlet请求转发html页面乱码问题
  14. 相干量子计算登上IEEE Spectrum:能更有效的求解复杂优化问题
  15. 那点你不知道的XHtml(Xml+Html)语法基础(DTD、XSD)
  16. 医学图像的 有损压缩 以及可接受的 压缩比
  17. 因果推断学习笔记三——Uplift模型
  18. 炫舞服务器显示方框怎么回事,win10界面全是显示方块如何解决_win10系统界面出现白色方框该怎么去除-win7之家...
  19. 最新京东短信登录,免费送JDCK获取短信登录
  20. VBA模块, Word中有关定位选择后对选中的内容进行查找替换

热门文章

  1. 许久没有写过原创文章了
  2. javaweb基于SSM开发房屋租赁管理系统(房东 租客两种用户) 课程设计 大作业源码 毕业设计
  3. 算法_趣味分数_Question5_列出真分数序列(java实现)
  4. 视频在H5页面在微信浏览器不能自动播放问题
  5. js实现公司年会抽奖活动(亲测可用)
  6. Egret 学习笔记
  7. DataGear 轻松制作支持图表联动的全国地图、省级地图数据可视化看板
  8. win 32学习笔记(三) 消息队列
  9. jupyter和spider;Anaconda、Python、Jupyter、Pycharm、Spyder、conda、pip
  10. 怎样在Mac上查找WiFi密码并在iPhone上共享它?