我想在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的初学者,所以这不容易解决问题。..下面是我项目中的源代码示例。
System.Drawing
Unity3D不支持。可能是因为它基于GDI +,并且Unity是多平台的,所以它只能在Windows上使用(Mono对于* nix系统具有自己的GDI +版本,但也不能与Unity一起使用)。官方原因似乎是“ System.Drawing在OpenGL / DirectX中不起作用”。
您似乎可以使用一些技巧来使这项工作奏效,但是只有在您坚持使用Windows时才有意义。如果你想要走这条路,有一个在Unity3D论坛的答案,应该帮助你- http://answers.unity3d.com/answers/253571/view.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句