• 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相关的问题!

  • 相关阅读:
    在 WinForm 中打开页面采用POST方式传参http。可以多个参数传递,返回json字符串
    交换平台第二章:项目边界与架构设计(上)
    物理隔离下的数据交换平台难点解析与实践(一)
    十年风雨,一个普通程序员的成长之路(六)抉择与出发
    十年风雨,一个普通程序员的成长之路(五) 成长:得到与教训
    十年风雨,一个普通程序员的成长之路(四)深圳:积累与转折
    十年风雨,一个普通程序员的成长之路(三)铜陵:大雪与加班
    十年风雨,一个普通程序员的成长之路(二)外包:颠沛与流离
    十年风雨,一个普通程序员的成长之路(一)怀念:西安的小黑屋
    多数据源连接Oracle报错,linux熵池耗尽问题
  • 原文地址:https://www.cnblogs.com/Jason-c/p/14303306.html
Copyright © 2020-2023  润新知