前几天,做一个功能,上传头像。
在项目中,有大头像和小头像这两种格式,故需要用到Texture缩放,我在[color=rgb(85, 85, 85) !important]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(成功):引入官方解决方案: [url=]TextureScale[/url](含js源码和C#源码)
TextureScale.Bilinear (texture , 100, 100); //100*100大小
呈现,效果好极了,Cool。
TextScale源码没有细究,应该是用到了矩阵变形等算法,使用这个类库,要注意如下约束: 1 texture可读写 2 ARGB32, RGB24 and Alpha8 textures
转载请注明转自《Unity3D项目实战笔记(7):Texture材质的缩放源码 TextureScale》
|