Unity中对一张2D图片进行旋转
2017-09-13 21:53
2771 查看
这段时间项目中碰到要让用户选择本地相册或调用手机摄像头拍摄后的图片进行简单的旋转并上传到服务器的需求,关于打开本地相册和调用摄像头的部分这里先略过,这篇文章主要讲讲当拿到本地的图片后怎样对图片进行简单的旋转。
首先,因为要上传到服务器,所以这里对图片的旋转必须对Texture本身进行操作,故我用到了Texture2D类里的方法:GetPixel和SetPixel,GetPixel用来获取坐标为(x,y)的像素点的颜色,即参数为int x和int y,返回值为Color;SetPixel则用来设置新的像素点,参数为int x、int y及Color。一张2D Texture由width*height个像素点组成,想象一张网格图,每个网格对应一个像素点,则每个像素的横坐标在[0,width - 1]内,纵坐标在[0,height
- 1]内。假设我们要将图片顺时针旋转90°,由于Unity中的坐标原点在图的左下角,故一个坐标为(x,y)的像素点旋转90°后的坐标变为了(y,width - 1 - x),对每个像素点进行这样的坐标变换就可实现图片的旋转了。具体代码如下。
首先,因为要上传到服务器,所以这里对图片的旋转必须对Texture本身进行操作,故我用到了Texture2D类里的方法:GetPixel和SetPixel,GetPixel用来获取坐标为(x,y)的像素点的颜色,即参数为int x和int y,返回值为Color;SetPixel则用来设置新的像素点,参数为int x、int y及Color。一张2D Texture由width*height个像素点组成,想象一张网格图,每个网格对应一个像素点,则每个像素的横坐标在[0,width - 1]内,纵坐标在[0,height
- 1]内。假设我们要将图片顺时针旋转90°,由于Unity中的坐标原点在图的左下角,故一个坐标为(x,y)的像素点旋转90°后的坐标变为了(y,width - 1 - x),对每个像素点进行这样的坐标变换就可实现图片的旋转了。具体代码如下。
public class TextureRotate { Texture2D texture = new Texture2D(300, 400); int width = texture.width; //图片原本的宽度 int height = texture.height; //图片原本的高度 Texture2D newTexture = new Texture2D(height,width); //实例化一个新的texture,高度是原来的宽度,宽度是原来的高度 public Texture2D rotate() { for (int i = 0; i < width - 1; i++) { for (int j = 0; j < height - 1; j++) { Color color = texture.GetPixel(i,j); newTexture.SetPixel(j, width - 1 - i, color); } } newTexture.Apply(); return newTexture; } }
相关文章推荐
- Unity 2D Sprite 一张精灵图片【自动切割(Automatic )】成【不规则的许多个小图片】的步骤
- 【Unity3d基础】Unity3d 中如何旋转一张2D图片到指定角度
- [置顶] unity中点击屏幕2d图片的移动和旋转
- Android单点触控技术,对图片进行平移,缩放,旋转操作
- unity 使用超椭圆方程对图片进行裁切制作圆角矩形
- iOS 对Image图片本身进行旋转0,90,180,270
- Unity2D Sprite Editor 图片切割
- IE8 下面通过滤镜的方式进行图片旋转
- [原创]unity3D学习【功能实现】之二:图片的旋转/2d物体的旋转
- ios-day15-05(Quartz 2D之一张图片以平铺或者填充的方式设置为UIView的背景、以填充的方式为UIView设置条纹背景)
- unity 调用安卓系统摄像机和相册并对图片进行裁剪(一)
- Android单点触控技术,对图片进行平移,缩放,旋转操作
- 图片2d旋转
- 一张神奇而又有趣的旋转图片…
- html+css图片2D旋转
- Android对图片进行平移,缩放,旋转操作
- 当点击指定区域图片(精灵)进行旋转
- Unity 获取某个文件夹下的所有图片并进行展示(亲测有效)
- 将多个图片整合到一张图片中再用CSS 进行网页背景定位
- C#在Unity中保存一张.png格式的图片