我在Unity中有一些C#代码,可以从我的Android设备文件系统中获取大图像,现在我想使用它来创建一个小的缩略图像。
我找到了很多不同的建议来实现这个功能,如下所示:
MemoryStream outputStream = new MemoryStream();
System.Drawing.Image image = System.Drawing.Image.FromFile(originalImagePath);
System.Drawing.Image thumbnail = image.GetThumbnailImage(thumbnailWidth, thumbnailHeight,()=>false, IntPtr.Zero);
thumbnail.Save(outputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
return outputStream;
然而,与上述方法一样,我发现的所有方法都需要使用System.Drawing命名空间。但我却无论如何都无法在Android上使该命名空间中的函数正常工作,即使将“System.Drawing.dll”添加到Assets文件夹中后,构建“System.Drawing.Image”时仍会出现错误,提示找不到“gdiplus.dll”。我尝试下载并添加了所需的“gdiplus.dll”到Assets中,但我收到的错误消息是无法找到它!
我不理解为什么很难让System.Drawing函数在Unity中正常工作,但这有点离题,因为我真正想做的只是创建一个位于用户Android设备上的图像缩略图。欢迎提供任何建议!
编辑:我忘记提到我想避免使用Texture2D的解决方案,因为它们无法在主线程之外运行,从而导致性能下降。
谢谢您的帮助!=)