不设置readable,读取图片数据

  直接加载非Readable的Texture,是不能访问其像素数据的:

    // 加载
    var tex = AssetDatabase.LoadAssetAtPath<Texture2D>(assetPath);
    var data = tex.GetPixels();

  上面的代码汇报如下错误:

    the texture memory can not be accessed from scripts. You can make the texture readable in the Texture Import Settings.

  也就是说需要将Texture标记为可读状态,但是有时候在写一些图片批处理解析的时候,大量修改readable,用完以后再改回来,是非常耗时的,所以需要使用别的方式来读取Texture的像素数据。

    // 加载
    var tex = AssetDatabase.LoadAssetAtPath<Texture2D>(assetPath);

    FileStream fs = File.OpenRead(fileFullname);
    fs.Seek(0, SeekOrigin.Begin);
    byte[] image = new byte[(int)fs.Length];
    fs.Read(image, 0, (int)fs.Length);

    var texCopy = new Texture2D(tex.width, tex.height);
    texCopy.LoadImage(image);

  这样可以不修改readable,并且可以读取图像的信息。

  PS:这样读出来的数据,texture的尺寸是图片的本地尺寸,和unity import setting后的大小可能会不一样。

原文地址:https://www.cnblogs.com/sifenkesi/p/11695249.html

时间: 2024-10-07 14:25:29

不设置readable,读取图片数据的相关文章

iOS读取图片数据的两种方法:UIImageJPEG和UIImagePNG

UIImageJPEGRepresentation函数有两个参数:引用的图片和压缩系数. UIImagePNGRepresentation(UIImage * image)函数只有一个引用图片参数. UIImagePNGRepresentation(UIImage * image)要比UIImageJPEGPresentation(UIImage * image, 1.0)返回的图片数据量大很多,如果对图片清晰度要求不高,可以通过设置UIImageJPEGReprentation的第二个参数,大

tf.keras 用生成器读取图片数据+预处理

0. 需求 当训练的数据非常多时,是不希望分配过多的内存将数据存入,否则其他占用内存的数据处理步骤就没法进行了.我们最好是以小批量地方式读入数据,然后预处理,然后送到网络,之后释放内存,以此循环. 1. 方法的简要说明 tf.keras中有一个高度封装的图片预处理类:ImageDataGenerator ImageDataGenerator类还实现了一个非常方便的自动读取训练集文件夹的方法:flow_from_directory() 我们实例化一个ImageDataGenerator类后,设置预

读取图片的几种方式

读取图片的方式有以下几种: 1 . 从沙盒中获取图片  : 1>通过imageNamed:去加载,加载沙盒中.app包中的图片文件 第一次加载图片时,会去沙盒中读取此文件,然后系统会将此图片缓存到内存中 方便以后读取,以后再读取时,会从缓存中寻找(加快加载速度) 如果图片经常使用,可以采用此种方式       2>通过filePath手动读取图片: 每一次都要重新从沙盒中读取 如果图片特别大,而且图片不会经常使用,可以采用此种方式,节约内存 代码演示如下 : //1.imageNamed UI

Mapnik读取PostGIS数据渲染图片

__author__ = 'Administrator' # encoding: utf-8 import sys import datetime import mapnik m = mapnik.Map(256,256,"+proj=latlong +datum=WGS84") #m.background = mapnik.Color('steelblue') # set background colour to 'steelblue'. s = mapnik.Style() r =

将图片数据转化为TFRecord格式与读取

将图片数据转化为TFRecord格式与读取 一.问题情景描述 目录下有一个叫做"Original"的文件夹,文件夹里有十个子文件,分别命名为1,2···一直到10(为了做10轮取平均),这10个子文件夹里还有四个子文件夹,分别命名为"train0","train1","test0","test1".其中含义如其命名所示.这四个子文件夹里一共有若干张JPG格式图像数据.现欲将这份图像数据转化为TFRecord

从串口设置、读取、并分析um220模块的数据

好久没有写博客了,先从一个小小的程序开始一段新的历程吧: 最近的项目主要还是用的的是linux系统,这篇文章主要介绍如何从设置.读取BD+gps模块(um220),实际上主要是对串口(UART)的操作. /* * gps.c * * um220 test * * Author: Wang Zhengkai <[email protected]> * */ #include <stdio.h> #include <termios.h> #include <strin

Java从网络读取图片并保存至本地

http://blog.csdn.net/sabic/article/details/6564169 ************************************ package getUrlPic; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURL

拍照/从相册读取图片后进行裁剪的方法

本范例实现的是用户可以通过拍照.相册获取图片,然后进行裁剪,最后将结果保存在IamgeView中.当然你可以选择将结果同时存放在sd卡中,作为以后的缓存. 思路: 1.通过拍照获取图片 进入系统自带的相机界面——>拍照——>保存在sd卡中——>读取sd卡的文件进行裁减.PS:裁剪前先判断是否获取到图片了 2.通过系统相册获取图片 进入系统相册——>找到图片——>进行裁减.PS:裁剪前线判断是否获取到系统的图片了 接下来贴上实现方法: 1.进入拍照界面或者相册的方法,获取信息后

ifstream读取图片,Qt载入显示

应用场景: 需要显示图片的同时也需要图片的二进制数据.例如需要将图片作为二进制数据转化为string发送,而同时需要显示图片. 主要思路: 将图片文件用二进制格式读入,然后将二进制数据加载到 QImage 中,达到显示效果.让后根据需要,将读取到的二进制数据自行做处理. 主要代码: //begin std::ifstream fileInput("F:\\VSprojects\\DChat\\1.jpg", std::ios_base::binary); //获取文件大小 fileIn