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

时间:2016-03-08 08:01:58

标签: image bufferedimage 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是Label。

1 个答案:

答案 0 :(得分:1)

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

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并始终添加"按原样#34;否则它可能会失败,如here所述。

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

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