1. 程式人生 > >Unity 獲取某個資料夾下的所有圖片並進行展示(親測有效)

Unity 獲取某個資料夾下的所有圖片並進行展示(親測有效)

 功能實現如題。如何將某個資料夾下的所有圖片找出來,這是將程式中一個截圖功能擷取到的所有圖片進行展示出來的功能需求,但是因為是通過GUI的方式,我感覺缺陷很大,下面有修改過的版本。

using UnityEngine;  
using System.Collections.Generic;  
using System.IO;  

public class LoadAllImage : MonoBehaviour  
{  
    // 儲存獲取到的圖片  
    List<Texture2D> allTex2d = new List<Texture2D> ();  

    // Use this for initialization  
void Start () { load (); } void OnGUI () { if (allTex2d.Count != 0) { // 把儲存的圖片以Button的形式顯示出來 for (int i = 0; i < allTex2d.Count; i++) { GUILayout.Button (allTex2d [i]); } } } void
load () { List<string> filePaths = new List<string> (); string imgtype = "*.BMP|*.JPG|*.GIF|*.PNG"; string[] ImageType = imgtype.Split ('|'); for (int i = 0; i < ImageType.Length; i++) { //獲取d盤中a資料夾下所有的圖片路徑 string
[] dirs = Directory.GetFiles (@"d:\\a", ImageType [i]); for (int j = 0; j < dirs.Length; j++) { filePaths.Add (dirs [j]); } } for (int i = 0; i < filePaths.Count; i++) { Texture2D tx = new Texture2D (100, 100); tx.LoadImage (getImageByte (filePaths [i])); allTex2d.Add (tx); } } /// <summary> /// 根據圖片路徑返回圖片的位元組流byte[] /// </summary> /// <param name="imagePath">圖片路徑</param> /// <returns>返回的位元組流</returns> private static byte[] getImageByte (string imagePath) { FileStream files = new FileStream (imagePath, FileMode.Open); byte[] imgByte = new byte[files.Length]; files.Read (imgByte, 0, imgByte.Length); files.Close (); return imgByte; } }

 修改過後的版本一個是不是通過GUI去顯示所有的圖片,而是添加了一個ScrollRect,以Element的方式新增到其中,實現滾動,點選等多種功能,排版也更加清晰。

using UnityEngine;
using System.Collections.Generic;
using System.IO;
using UnityEngine.UI;

public class LoadAllPic : MonoBehaviour
{
    public GameObject StoreObj;

    // 儲存獲取到的圖片  
    List<Texture2D> allTex2d = new List<Texture2D>();

    // Use this for initialization  
    void Start()
    {
        load();
        for(int i = 0; i < allTex2d.Count; i++)
        {
            GameObject temp= GameObject.Instantiate(StoreObj, StoreObj.transform.position, Quaternion.identity);
            temp.GetComponent<Transform>().SetParent(StoreObj.transform.parent);
            Sprite sprite = Sprite.Create(allTex2d[i], new Rect(0, 0, allTex2d[i].width, allTex2d[i].height), new Vector2(0.5f, 0.5f));
            temp.GetComponent<Image>().sprite = sprite;
            temp.transform.name = "Element" + i;
        }
        StoreObj.SetActive(false);
    }


    void load()
    {
        List<string> filePaths = new List<string>();
        string imgtype = "*.BMP|*.JPG|*.GIF|*.PNG";
        string[] ImageType = imgtype.Split('|');
        for (int i = 0; i < ImageType.Length; i++)
        {
            //獲取Application.dataPath資料夾下所有的圖片路徑  
            string[] dirs = Directory.GetFiles((Application.dataPath+"/Screenshot"), ImageType[i]);
            for (int j = 0; j < dirs.Length; j++)
            {
                filePaths.Add(dirs[j]);
            }
        }

        for (int i = 0; i < filePaths.Count; i++)
        {
            Texture2D tx = new Texture2D(100, 100);
            tx.LoadImage(getImageByte(filePaths[i]));
            allTex2d.Add(tx);
        }
    }

    /// <summary>  
    /// 根據圖片路徑返回圖片的位元組流byte[]  
    /// </summary>  
    /// <param name="imagePath">圖片路徑</param>  
    /// <returns>返回的位元組流</returns>  
    private static byte[] getImageByte(string imagePath)
    {
        FileStream files = new FileStream(imagePath, FileMode.Open);
        byte[] imgByte = new byte[files.Length];
        files.Read(imgByte, 0, imgByte.Length);
        files.Close();
        return imgByte;
    }

}

 結構及最終實現如圖:
這裡寫圖片描述

相關推薦

Unity 獲取某個資料所有圖片進行展示有效

 功能實現如題。如何將某個資料夾下的所有圖片找出來,這是將程式中一個截圖功能擷取到的所有圖片進行展示出來的功能需求,但是因為是通過GUI的方式,我感覺缺陷很大,下面有修改過的版本。 using UnityEngine; using System.Colle

【python】儲存某個資料所有圖片名字到一個txt檔案裡

用python實現讀取某一資料夾下的所有圖片名字到一個txt檔案 import os dir1='/data/Datasets/JPEGImages'#圖片檔案存放地址 txt1 = '/data/Datasets/picture.txt'#圖片檔名存放txt檔案地址 f1 = open

Windows資料所有圖片批量重新命名附C++,python,matlab程式碼

原資料夾 重新命名之後 C++ #include <iostream> #include <io.h> //對系統檔案進行操作的標頭檔案 #include <string> #include

Win7系統neo4j資料庫的安裝過程有效

Win7系統下Neo4j的安裝過程(親測有效) 參考:https://blog.csdn.net/lihuaqinqwe/article/details/80314895 https://blog.csdn.net/u013132035/article/details/54782582

獲取資料所有圖片名字,用 glob模組,簡單操作就可以,不用os的操作 python中的一個好用的檔名操作模組glob

轉 python中的一個好用的檔名操作模組glob 2017年09月19日 16:48:13 何雷 閱讀數:1963

python讀取資料所有圖片

python讀取資料夾下所有圖片 具體實現步驟 功能需求 說明 第一步:匯入庫 第二步:寫讀取函式 第三步:函式呼叫 結語 具體實現步驟 功能需求 讀取一個資料夾中的所有圖片,並將影

Matlab獲取資料所有檔名資料按矩陣賦值給變數

fileFolder=fullfile('D:\MATLAB\bin\trc'); dirOutput=dir(fullfile(fileFolder,'*.trc')); fileNames={dirOutput.name}; n = 1; for i=fileNames

java 遞迴顯示某個資料所有的檔名稱

import java.io.File; public class generateMappingClass { public static void main(String[] args) throws Exception { File file = new File

C++ 遍歷某個資料所有檔案

#include<iostream> #include<string> #include<io.h> #include<cstdio> #include<cstdlib> #include<cstring> using namespace

C#兩種方式獲取指定資料所有子目錄及檔案

using System.IO; /// <summary> /// 獲取指定目錄下的所有資料夾名 /// </summary> /// <param name="path">目錄路徑</param> /// <

JS:獲取某個資料的檔名稱,不讀取資料

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <script l

如何用C#獲取指定資料所有檔名?

如題:         比如我要在ASP.NET程式的伺服器上DATA資料夾下所以有檔名.然後輸出.希望用C#程式碼實現...  可以用   Directory.GetFiles();方法... 返回包含檔名的路徑.然後再擷取檔名 如: string[]   filename

ASP.NET2.0 遍歷資料所有圖片【月兒原創】

  ASP.NET2.0 遍歷資料夾下所有圖片 作者:清清月兒 1.以下目錄有若干圖片(都是大圖片) 2.在頁面展現效果圖 3.程式碼 後臺程式碼using System;using System.Data;using System.Configuration;using

批量讀取資料圖片儲存在一個四維陣列中

在深度學習開發中,我們在網上找的現成的資料集,都是已經處理好了的,我們直接使用即可。但是如果我們想用自己的圖片訓練網路,會發現編譯器總是報讀入圖片的shape大小不一致的情況。 在用來訓練的圖片陣列中,一般都是四維的,比如(600,299,299,3),600表示在這個陣列中一共有600張圖

fso獲取資料檔案個數和顯示檔名無後綴

 感謝sayhito333提供給我這段程式碼,為表示感謝,不修改其宣傳性的函式名了,呵呵! <%path = "database/"sub sayhito333(path)dim fsodim objFolderdim objFilesdim objFiledi

python查詢指定資料所有檔案按修改時間倒序排列

程式碼如下: import os, glob, time def search_all_files_return_by_time_reversed(path, reverse=True):

Java遍歷資料所有檔案替換指定字串

應用場景:比如有一個深層次的檔案目錄結構,如:javaAPI每個檔案裡面都有相同的內容,而我們要統一修改為其他內容。上千個檔案如果一個個修改顯得太不明智。import java.io.BufferedReader; import java.io.File; import ja

Ubuntu18.04python3匯入MySQL模組有效

我是Ubuntu18.04,分別裝好了python3和mysql8.0,現在要在python3中匯入mysql模組。 如果直接使用: sudo apt install  python-mysql 命令,預設安裝的是python2的模組,所以我開始百度,但是出來的

Centos6.5安裝mysql5.7版本有效

Step1: 檢測系統是否自帶安裝mysql # yum list installed | grep mysql Step2: 刪除系統自帶的mysql及其依賴 命令: # yum -y remove mysql-libs.x86_64 Step3: 給CentOS新增rp

Python命令列退格、刪除、方向鍵亂碼問題解決有效

一. 出現原因:readline模組沒有安裝 二. 解決方式: # 安裝readline模組yum -y install readline-devel# 進入Python安裝目錄cd /usr/local/Python-2.7.12# 重新執行Python的安裝configuremakemake insta