国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用 C# / Unity 進(jìn)行圖像處理

這篇具有很好參考價值的文章主要介紹了使用 C# / Unity 進(jìn)行圖像處理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

起因:有個需求要批量按比例調(diào)整UI頁面大小。并不是簡單的縮放,是所有素材都需要按比例縮小。于是,圖片首當(dāng)其沖。這里記錄一下解決方案,因為參考了挺多別人的事例,雖然都描述的都差不多,但大部分都只描述了方法,這里記錄一下整個完整的方案。

環(huán)境:Unity2019.4.10f1
需求是是要把所有的圖片按照從 1080x2160 到 720x1440 的等比縮小

直接上代碼吧

 
  public static void ChangeImageSize()
    {
    	//獲取需要處理的文件夾
        var oripath = Application.dataPath;
        string path = oripath.Substring(0, oripath.LastIndexOf("/", oripath.LastIndexOf("/") - 1)) +
                      "/art/UIProject/assets";
   
   		//獲取文件夾下的所有文件	
        DirectoryInfo direction = new DirectoryInfo(path);
        //DirectoryInfo.GetFiles返回當(dāng)前目錄的文件列表   
        FileInfo[] files = direction.GetFiles("*", SearchOption.AllDirectories);


		//使用UNITY的進(jìn)度條來顯示處理進(jìn)度
        var index = 0;
        EditorApplication.update = delegate()
        {
            bool isCancel =
                EditorUtility.DisplayCancelableProgressBar("處理中...", files[index].Name,
                    (float) index / files.Length);
        
        	//從所有文件中篩選出來圖片資源
            if (!files[index].Name.EndsWith(".png") && !files[index].Name.EndsWith(".jpg"))
            {
                index++;
            }
            else
            {
                string xmlName = files[index].Name.Split('.')[0];
                
                //圖片的處理方案
                var myBitmap = new System.Drawing.Bitmap(files[index].FullName);
                var x = Mathf.CeilToInt(myBitmap.Width * 720 / 1080f);
                var y = Mathf.CeilToInt(myBitmap.Height * 1440 / 2160f);
                var b = new System.Drawing.Bitmap(x, y);
                var g = System.Drawing.Graphics.FromImage(b);
                // 插值算法的質(zhì)量 
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                g.DrawImage(myBitmap, new System.Drawing.Rectangle(0, 0, x, y),
                    new System.Drawing.Rectangle(0, 0, myBitmap.Width, myBitmap.Height),
                    System.Drawing.GraphicsUnit.Pixel);
                g.Dispose();
                myBitmap.Dispose();
                //存到原圖的位置
                b.Save(files[index].FullName);
                b.Dispose();

                index++;
            }
        
            if (isCancel || index >= files.Length)
            {
                EditorUtility.ClearProgressBar();
                EditorApplication.update = null;
                if (isCancel)
                {
                    EditorUtility.DisplayDialog("取消提示", "取消處理后需要把已處理的文件還原才能再次處理。", "確認(rèn)");
                }
        
                if (index >= files.Length)
                {
                    EditorUtility.DisplayDialog("圖片處理完成", "處理一次即可,如果誤操作,需要把對應(yīng)目錄下所有圖片文件還原", "確認(rèn)");
                }
            }
        };

		//原始處理方案,省了Unity進(jìn)度條等花里胡哨的東西。
  		// for (int i = 0; i < files.Length; i++)
        // {
        //     if (!files[i].Name.EndsWith(".png") && !files[i].Name.EndsWith(".jpg")) continue;
        //     string xmlName = files[i].Name.Split('.')[0];
        //     Debug.Log("imageName:" + xmlName);
        //     var myBitmap = new System.Drawing.Bitmap(files[i].FullName);
        //     var x = Mathf.CeilToInt(myBitmap.Width * 720 / 1080f);
        //     Debug.Log("x:" + x);
        //     var y = Mathf.CeilToInt(myBitmap.Height * 1440 / 2160f);
        //     Debug.Log("y:" + y);
        //     var b = new System.Drawing.Bitmap(x, y);
        //     var g = System.Drawing.Graphics.FromImage(b);
        //     // 插值算法的質(zhì)量 
        //     g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
        //     g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
        //     g.DrawImage(myBitmap, new System.Drawing.Rectangle(0, 0, x, y),
        //         new System.Drawing.Rectangle(0, 0, myBitmap.Width, myBitmap.Height),
        //         System.Drawing.GraphicsUnit.Pixel);
        //     g.Dispose();
        //     myBitmap.Dispose();
        //     b.Save(files[i].FullName);
        //     b.Dispose();
        // }
    }

這里只是把圖片的大小做了變更,其他的屬性都可以類比一下更改。

當(dāng)然需要注意的有一點,就是代碼里使用的System.Drawing這個類Unity里面是不包含的。
我們可以通過在Plugins的目錄下添加System.Drawing.dll這個文件來達(dá)到使用該類的目的。
另外也可以直接通過C#生成解決方案來處理。即直接使用C#使用 原始處理方案 部分代碼生成windows桌面程序等來處理。因為很多工具在你創(chuàng)建C#方案時默認(rèn)是包含該工具類的。
使用 C# / Unity 進(jìn)行圖像處理

另外有可能在你處理過程中可能會出現(xiàn)如下報錯。使用 C# / Unity 進(jìn)行圖像處理

這種錯誤的話可以檢查一下自己傳遞的參數(shù)有沒有問題,因為你如果是計算出圖片寬高的話,很有可能因為四舍五入導(dǎo)致某個數(shù)值為0,這時候可能就會報這個錯誤。

以上。

抽空把工具整理了一下,大家可以下載嘗試一下。工程鏈接
可以下載下面這些來文件來使用。
使用 C# / Unity 進(jìn)行圖像處理
功能大概就是指定文件或文件夾按格式來處理圖片大小。

使用 C# / Unity 進(jìn)行圖像處理文章來源地址http://www.zghlxwxcb.cn/news/detail-405275.html

到了這里,關(guān)于使用 C# / Unity 進(jìn)行圖像處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 使用openCV進(jìn)行圖像處理

    使用 openCV進(jìn)行圖像處理,又名:學(xué)習(xí)計算機(jī)視覺理論,做 demo(第3 天) 目錄 2.1 圖像模糊 2.1.1 均值濾波 2.1.2 中值濾波 2.1.3 高斯濾波 2.1.4 案例實現(xiàn) 2.2 圖像銳化 2.2.1 圖像銳化簡介 2.2.2 案例實現(xiàn) 3.1 OpenCV繪圖 3.1.1 使用OpenCV繪制各種圖形 3.1.2 案例實現(xiàn) 3.2 圖像的幾何變換 3.2.1 幾

    2024年01月22日
    瀏覽(54)
  • “探索圖像處理的奧秘:使用Python和OpenCV進(jìn)行圖像和視頻處理“

    “探索圖像處理的奧秘:使用Python和OpenCV進(jìn)行圖像和視頻處理“

    ?1、上傳圖片移除背景后下載。在線摳圖軟件_圖片去除背景 | remove.bg – remove.bg 2、對下載的圖片放大2倍。ClipDrop - Image upscaler ?3、對放大后的下載照片進(jìn)行編輯。 ?4、使用deepfacelive進(jìn)行換臉。 1)將第三步的照片復(fù)制到指定文件夾。C:myAppdeepfakelivetempDeepFaceLive_NVIDIAuserda

    2024年02月16日
    瀏覽(106)
  • 入門:使用 OpenCV 進(jìn)行圖像處理

    入門:使用 OpenCV 進(jìn)行圖像處理

    介紹 圖像處理是計算機(jī)視覺的一個分支,它使用各種算法來處理和分析數(shù)字圖像。它涉及使用數(shù)學(xué)或統(tǒng)計操作來為許多應(yīng)用修改圖像,包括但不限于醫(yī)學(xué)和衛(wèi)星圖像以及數(shù)字?jǐn)z影。本文探討了圖像處理的基礎(chǔ)知識和該領(lǐng)域中使用的一些技術(shù)。 目錄 圖像處理基礎(chǔ) 圖像處理的應(yīng)

    2024年02月08日
    瀏覽(34)
  • 如何使用Matlab進(jìn)行圖像處理

    如何使用Matlab進(jìn)行圖像處理

    圖像處理是操縱圖像的數(shù)字屬性以提高其質(zhì)量或從圖像中獲得所需信息的過程。它需要在圖像處理應(yīng)用程序中導(dǎo)入圖像,分析圖像,然后對圖像進(jìn)行操作,以獲得能夠產(chǎn)生預(yù)期結(jié)果的適當(dāng)輸出。 在這篇文章中,我們將討論使用Matlab進(jìn)行圖像處理和分析的基礎(chǔ)知識,以確定圖像

    2023年04月10日
    瀏覽(90)
  • 【圖像處理】使用自動編碼器進(jìn)行圖像降噪(改進(jìn)版)

    阿里雷扎·凱沙瓦爾茲

    2024年02月15日
    瀏覽(96)
  • 使用Elasticsearch進(jìn)行圖像和視頻處理

    圖像和視頻處理是計算機(jī)視覺領(lǐng)域中的重要應(yīng)用,它們涉及到大量的數(shù)據(jù)處理和存儲。Elasticsearch是一個分布式搜索和分析引擎,它可以幫助我們更高效地處理和存儲圖像和視頻數(shù)據(jù)。在本文中,我們將討論如何使用Elasticsearch進(jìn)行圖像和視頻處理,包括背景介紹、核心概念與

    2024年02月21日
    瀏覽(17)
  • 【OpenCV實現(xiàn)圖像:使用OpenCV進(jìn)行圖像處理之透視變換】

    【OpenCV實現(xiàn)圖像:使用OpenCV進(jìn)行圖像處理之透視變換】

    透視變換(Perspective Transformation)是一種圖像處理中常用的變換手段,它用于將圖像從一個視角映射到另一個視角,常被稱為投影映射。透視變換可以用于矯正圖像中的透視畸變,使得圖像中的物體在新的視平面上呈現(xiàn)更加規(guī)則的形狀。 透視變換通常涉及到尋找圖像中的特定

    2024年02月03日
    瀏覽(30)
  • FPGA 上使用 SVM 進(jìn)行圖像處理

    FPGA 上使用 SVM 進(jìn)行圖像處理

    面部識別是一個經(jīng)常討論的計算機(jī)科學(xué)話題,并且由于計算機(jī)處理能力的指數(shù)級增長而成為人們高度關(guān)注的話題。面部識別在機(jī)器人、生物安全和汽車工業(yè)等許多領(lǐng)域都有廣泛的應(yīng)用,涉及對輸入圖像應(yīng)用數(shù)學(xué)算法,提取不同的特征,表明所提供的圖片中是否存在人臉。方向

    2024年03月22日
    瀏覽(31)
  • 使用Python和OpenCV進(jìn)行圖像處理和分析

    簡介: 圖像處理和分析是計算機(jī)視覺領(lǐng)域的重要組成部分。本文將介紹如何使用Python編程語言和OpenCV庫進(jìn)行圖像處理和分析。我們將涵蓋圖像讀取、顯示、濾波、邊緣檢測和圖像分割等常見的圖像處理操作,并提供相應(yīng)的代碼示例。 安裝OpenCV: 首先,我們需要安裝OpenCV庫。

    2024年02月12日
    瀏覽(101)
  • LabVIEW使用圖像處理進(jìn)行交通控制性能分析

    LabVIEW使用圖像處理進(jìn)行交通控制性能分析

    LabVIEW使用圖像處理進(jìn)行交通控制性能分析 采用普雷維特、拉普拉斯、索貝爾和任意的空間域方法對存儲的圖像進(jìn)行邊緣檢測,并獲取實時圖像。然而,對四種不同空間域邊緣檢測方法的核的性能分析。 以前,空路圖像存儲在數(shù)據(jù)庫中,道路上沒有任何車輛。將圖像轉(zhuǎn)換為陣

    2024年02月13日
    瀏覽(38)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包