簡體   English   中英

Bitmap.Save()方法在Unity源中不起作用

[英]Bitmap.Save() method is not working in Unity source

我想在Unity中實現“ Bitmap to Texture2D”功能。

我學會了制作Texture2D實例,在下面使用此語法。

// **LoadImage(byte[] arr)** can load byte array data and make Texture2D
var data = BitmapToByteMethod(bitmap);

var textureCanvas = new Texture2D(bitmap.Width, bitmap.Height, TextureFormat.ARGB32, false);
textureCanvas.LoadImage(data);
textureCanvas.Apply();

為了實現此功能,我確實這樣做了。

using (MemoryStream memoryStream = new MemoryStream())
{
    ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);

    System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
    EncoderParameters myEncoderParameters = new EncoderParameters(1);
    EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 100L);
    myEncoderParameters.Param[0] = myEncoderParameter;

// this is the point error occurred.

    bitmap.Save(memoryStream, jpgEncoder, myEncoderParameters);
    //bitmap.Save(memoryStream, ImageFormat.Jpeg);
    return memoryStream.ToArray();
}

首先,我有一個位圖圖像。 其次,將位圖轉換為字節數組。 (它在我的c#示例項目中效果很好。)但是,當我嘗試在Unity中運行該函數時,執行“ Bitmap.Save()”方法后Unity程序將關閉。

我是Unity的初學者,所以這不容易解決問題。..下面是我項目中的源代碼示例。

Unity3D不支持System.Drawing 可能是因為它基於GDI +,並且Unity是多平台的,所以只能在Windows上使用(Mono對於* nix系統具有自己的GDI +版本,但也不能與Unity一起使用)。 官方原因似乎是“ System.Drawing在OpenGL / DirectX中不起作用”。

您似乎可以使用一些技巧來完成這項工作,但是只有當您希望使用Windows時才有意義。 如果你想要走這條路,有一個在Unity3D論壇的答案,應該幫助你- http://answers.unity3d.com/answers/253571/view.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM