[英]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.