在 [CodenameOne] 中使用 URLImage 时如何将缓冲图像转换为图像

How to convert Buffered Image to Image while using URLImage in [CodenameOne]

使用以下代码出现 java.lang.ClassCastException: java.awt.image.BufferedImage cannot be cast to com.codename1.ui.Image 错误。我该如何解决这个问题?

EncodedImage encImage = (EncodedImage) fetchResourceFile().getImage("user2.png");
Image profileImage= URLImage.createToStorage(encImage, "Medium_me.jpg", profile.getProfileImageURL(),URLImage.RESIZE_SCALE);         
System.out.println("Imaged:" + profileImage.getImage());

findPlayerImageGs(f).setIcon((Image) profileImage.getImage()); //Error Line
findPlayerImageGs(f).repaint();

findPlayerImageGs 是标签。

检查以下修改后的代码,它应该可以工作

EncodedImage encImage = (EncodedImage)      
fetchResourceFile().getImage("user2.png");
Image profileImage= URLImage.createToStorage(encImage, "Medium_me.jpg",      profile.getProfileImageURL(),URLImage.RESIZE_SCALE);         
System.out.println("Imaged:" + profileImage.getImage());
**findPlayerImageGs(f).setIcon(profileImage); //it should work**
findPlayerImageGs(f).repaint();

请注意,您不应操纵 URLImage 并始终添加它 "as is" 否则它可能会像 here 所解释的那样失败。

图像的getImage()方法returns图像的平台原生版本。作为开发人员,这对您来说几乎没有用,因为平台本机映像在每个平台、JavaSE 中或模拟器映像是通过 AWT BufferedImage 实现的。在 iOS 你会得到一个 long[] 指向保存原生 Objective-C 图像的内存区域。

此方法的存在使本机代码可以访问依赖于平台的句柄。