zoukankan      html  css  js  c++  java
  • Unity 裁剪或者拷贝图片

    方法一:

    	/// <summary>
    	/// 裁剪或者拷贝图片,图片的原点在左下角
    	/// </summary>
    	/// <param name="原图"></param>
    	/// <param name="x,y表示从原图的什么位置开始裁剪,w,h表示裁剪的宽高"></param>
    	/// <param name="x,y表示拷贝到新的图片中的什么位置,w,h新的图片的宽高"></param>
    	/// <returns></returns>
    	Texture2D CopyOrCutTexture(Texture2D source, RectInt cutScope, RectInt targetScope)
    	{
    		Color[] colors = source.GetPixels(cutScope.x, cutScope.y, cutScope.width, cutScope.height);
    		Texture2D target = new Texture2D(targetScope.width, targetScope.height, source.format, false);
    		target.SetPixels(targetScope.x, targetScope.y, targetScope.width, targetScope.height, colors);
    		return target;
    	}
    

      

    方法二:

    	/// <summary>
    	/// 裁剪或者拷贝图片,图片的原点在左下角
    	/// </summary>
    	/// <param name="原图"></param>
    	/// <param name="x,y表示从原图的什么位置开始裁剪,w,h表示裁剪的宽高"></param>
    	/// <param name="x,y表示拷贝到新的图片中的什么位置,w,h新的图片的宽高"></param>
    	/// <returns></returns>
    	Texture2D CutOrCopyTexture(Texture2D source, RectInt cutScope, RectInt targetScope)
    	{
    		Texture2D target = new Texture2D(targetScope.width, targetScope.height, source.format, false);
    		Graphics.CopyTexture(source, 0, 0, cutScope.x, cutScope.y, cutScope.width, cutScope.height, target, 0, 0, targetScope.x, targetScope.y);
    		return target;
    	}
    

      

    完整代码:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class CopyTexture : MonoBehaviour {
    
    	public Texture2D source;
    
    	void Start () {
            //Texture2D target = CopyOrCutTexture(source, new RectInt(0, 0, 500, 500), new RectInt(0, 0, 500, 500));
            //byte[] data = target.EncodeToPNG();
            //System.IO.File.WriteAllBytes("E:\temp.png", data);
    
            Texture2D target = CutOrCopyTexture(source, new RectInt(0, 0, 500, 500), new RectInt(0, 0, 500, 500));
            byte[] data = target.EncodeToPNG();
            System.IO.File.WriteAllBytes("E:\temp.png", data);
        }
    
    	/// <summary>
    	/// 裁剪或者拷贝图片,图片的原点在左下角
    	/// </summary>
    	/// <param name="原图"></param>
    	/// <param name="x,y表示从原图的什么位置开始裁剪,w,h表示裁剪的宽高"></param>
    	/// <param name="x,y表示拷贝到新的图片中的什么位置,w,h新的图片的宽高"></param>
    	/// <returns></returns>
    	Texture2D CopyOrCutTexture(Texture2D source, RectInt cutScope, RectInt targetScope)
    	{
    		Color[] colors = source.GetPixels(cutScope.x, cutScope.y, cutScope.width, cutScope.height);
    		Texture2D target = new Texture2D(targetScope.width, targetScope.height, source.format, false);
    		target.SetPixels(targetScope.x, targetScope.y, targetScope.width, targetScope.height, colors);
    		return target;
    	}
    
    	/// <summary>
    	/// 裁剪或者拷贝图片,图片的原点在左下角
    	/// </summary>
    	/// <param name="原图"></param>
    	/// <param name="x,y表示从原图的什么位置开始裁剪,w,h表示裁剪的宽高"></param>
    	/// <param name="x,y表示拷贝到新的图片中的什么位置,w,h新的图片的宽高"></param>
    	/// <returns></returns>
    	Texture2D CutOrCopyTexture(Texture2D source, RectInt cutScope, RectInt targetScope)
    	{
    		Texture2D target = new Texture2D(targetScope.width, targetScope.height, source.format, false);
    		Graphics.CopyTexture(source, 0, 0, cutScope.x, cutScope.y, cutScope.width, cutScope.height, target, 0, 0, targetScope.x, targetScope.y);
    		return target;
    	}
    }
    

      

    博客园Jason_C技术交流群

    扫描二维码加入qq群:623307256,共同探讨工作中遇到的Unity相关的问题!

  • 相关阅读:
    < java.lang >-- StringBuilder字符串缓冲区
    Integer对象
    < java.lang >-- StringBuffer字符串缓冲区
    < java.lang >-- String字符串
    单例设计模式:★★★★★
    线程同步 Lock接口
    POJ 3254 Corn Fields (状压dp)
    Codeforces 583D. Once Again... (LIS变形)
    Light oj 1005
    Codeforces 543D. Road Improvement (树dp + 乘法逆元)
  • 原文地址:https://www.cnblogs.com/Jason-c/p/14303306.html
Copyright © 2011-2022 走看看