热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Unity代码集锦之图片处理

1、将Texture2D保存为jpgvoidTestSaveImageToJPG(Texture2Dbuffer){File.WriteAllByte

1、将Texture2D保存为jpg

    void TestSaveImageToJPG(Texture2D buffer)
    {
        File.WriteAllBytes("F:/output.jpg", buffer.EncodeToJPG());
    }

 

2、将图片的原始数据保存至txt

    void TestSaveImageToTXT(Texture2D buffer)
    {
        byte[] rawData= buffer.GetRawTextureData();
        //byte[] bt = ChangeRGB(rawData).GetRawTextureData();//转换RGB
        //char[] ch = Encoding.ASCII.GetChars(bt);//byte[]转为char[]
        StreamWriter sw = new StreamWriter(@"F:\\output.txt"); //保存到指定路径
        for (int i = 0; i  

 

 

3、转换图片的RGB

    Texture2D ChangeRGB(Texture2D source)
    {
        Texture2D result = new Texture2D(source.width, source.height, TextureFormat.RGB24, false);
        for (int i = 0; i  

  

 

对于大多数纹理,更快的是使用GetPixels32,它返回低精度颜色数据,而无需进行昂贵的整数到浮点转换。其中Color数组是Texture2D从左到右,从下到上的像素

    Texture2D ChangeRGB(Texture2D source)
    {
        Texture2D result = new Texture2D(source.width, source.height, TextureFormat.RGB24, false);

        for (int i = 0; i  

  

下面代码和上面代码功能是一样的,都是将图片上下并镜像翻转,但是速度却快了近一倍

Texture2D ChangeRGB(Texture2D source)
    {
        Texture2D result = new Texture2D(source.width, source.height, TextureFormat.RGB24, false);

        Color32[] sourceColor = source.GetPixels32();
        Color32[] newColor = new Color32[sourceColor.Length];
        for (int i = 0; i  

  

Texture2D ChangeRGB(Texture2D source)
    {
        Texture2D result = new Texture2D(source.width, source.height, TextureFormat.RGB24, false);

        Color32[] sourceColor = source.GetPixels32();
        Color32[] newColor = new Color32[sourceColor.Length];
        int currentR = 0;//当前的行
        int currentC = 0;//当前的列
        for (int i = 0; i  

  

附:

//顺时针旋转90度
    Texture2D ChangeRGB(Texture2D source)
    {
        Texture2D result = new Texture2D( source.height, source.width, TextureFormat.RGB24, false);

        Color32[] sourceColor = source.GetPixels32();
        Color32[] newColor = new Color32[sourceColor.Length];
        for (int i = 0; i  

  

//逆时针旋转90度
    Texture2D ChangeRGB(Texture2D source)
    {
        Texture2D result = new Texture2D( source.height, source.width, TextureFormat.RGB24, false);

        Color32[] sourceColor = source.GetPixels32();
        Color32[] newColor = new Color32[sourceColor.Length];
        for (int i = 0; i  

  

4、将Texture转为Texture2D,参数可传入Texture也可传入WebCamTexture类型的参数,和上述的“1”配合使用,可将摄像头的数据保存为图片

    Texture2D TextureToTexture2D(Texture texture)
    {
        Texture2D texture2D = new Texture2D(texture.width, texture.height, TextureFormat.RGBA32, false);
        RenderTexture currentRT = RenderTexture.active;
        RenderTexture renderTexture = RenderTexture.GetTemporary(texture.width, texture.height, 32);
        Graphics.Blit(texture, renderTexture);

        RenderTexture.active = renderTexture;
        texture2D.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0);
        texture2D.Apply();

        RenderTexture.active = currentRT;
        RenderTexture.ReleaseTemporary(renderTexture);
        return texture2D;
    }

  

 5、屏幕截图

        Texture2D frameBuffer;
        Rect camRect;
        frameBuffer = new Texture2D(width, height, TextureFormat.RGB24, false, false);
        camRect = new Rect(0, 0, width, height);
        frameBuffer.ReadPixels(camRect, 0, 0);
        frameBuffer.Apply(); 

  

  


推荐阅读
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 抽空写了一个ICON图标的转换程序
    抽空写了一个ICON图标的转换程序,支持png\jpe\bmp格式到ico的转换。具体的程序就在下面,如果看的人多,过两天再把思路写一下。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 使用freemaker生成Java代码的步骤及示例代码
    本文介绍了使用freemaker这个jar包生成Java代码的步骤,通过提前编辑好的模板,可以避免写重复代码。首先需要在springboot的pom.xml文件中加入freemaker的依赖包。然后编写模板,定义要生成的Java类的属性和方法。最后编写生成代码的类,通过加载模板文件和数据模型,生成Java代码文件。本文提供了示例代码,并展示了文件目录结构。 ... [详细]
  • 流数据流和IO流的使用及应用
    本文介绍了流数据流和IO流的基本概念和用法,包括输入流、输出流、字节流、字符流、缓冲区等。同时还介绍了异常处理和常用的流类,如FileReader、FileWriter、FileInputStream、FileOutputStream、OutputStreamWriter、InputStreamReader、BufferedReader、BufferedWriter等。此外,还介绍了系统流和标准流的使用。 ... [详细]
  • 重组蛋白/细胞因子的实验操作
    在我们进行抗体制备、ELISA、药物研究、免疫实验、细胞培养、晶体结构分析等实验时,免不了要和重组蛋白打交道。MCE重组蛋白产品涵盖超过2000种不同功能的重组蛋白& ... [详细]
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼*madebyebhrz*#include#include#include#include#include#include#include ... [详细]
  • java io换行符_Java IO:为什么从stdin读取时,换行符的数字表示出现在控制台上?...
    只是为了更好地理解我在讲座中听到的内容(关于Java输入和输出流),我自己做了这个小程序:publicstaticvoidmain(String[]args)thro ... [详细]
  • Non-ASCIIhelponitsownisOK: ... [详细]
author-avatar
otion
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有