Unity3D项目实战笔记(7):Texture材质的缩放源码 TextureScale

前几天,做一个功能,上传头像。

在项目中,有大头像和小头像这两种格式,故需要用到Texture缩放,我在Unity3D官网找了一下,找到了解决方案,非常简单,共享给大家。

原型代码:

message是Android或者IOS拍照后,返回的字符串:64位格式存储的png图片,已经剪裁为300*300了。

byte[] data = Convert.FromBase64String(message);

Texture2D texture = new Texture2D(0, 0);

texture.LoadImage(bytes);

texture.wrapMode = TextureWrapMode.Clamp;

 

texture 是大图,现在要用小图,如何搞?

尝试1:

Texture2D 自带的Width、Height重新设置大小,然后Apply。

结果编译报错,Width和Height无法动态设置,故这个方案失败。

 

尝试2:

Texture2D 自带的Resize方法,然后Apply。

结果是获得了要的小图像,但是不是缩放,而是莫名其妙的图片,故这个方案失败。

 

尝试3(成功):

引入官方解决方案: TextureScale(含js源码和C#源码)

 

TextureScale.Bilinear (texture , 100, 100);  //100*100大小

呈现,效果好极了,Cool。

 

TextScale源码没有细究,应该是用到了矩阵变形等算法,使用这个类库,要注意如下约束:

1 texture可读写

2 ARGB32, RGB24 and Alpha8 textures

作者: 王文刚

学习心得、技术分享