1
我试图从URL使用URLImage.createToStorage拉图像。不过,我希望该图片看起来四舍五入,以便为图片添加遮罩。但是,当我运行标签时只显示占位符图像,而不是url图像。当我注释掉将圆角蒙版添加到图像显示图像的代码时。我的圆形图像代码有问题吗?我使用Display.getInstance()。callSerially()。Codename one rounded URLImage not display
//Where I display the image.
public void setUpProfile(Form f) {
Label imageLabel = findMyImage(f);
Image img = getImageFromRes("myprofile.png");
Image scaled = img.scaledWidth(f.getWidth()/2);
EncodedImage enc = EncodedImage.createFromImage(scaled, false);
Display.getInstance().callSerially(new Runnable() {
@Override
public void run() {
imageLabel.setIcon(getRoundedImage(URLImage.createToStorage(enc,
"profileImage8", me.getPicture(), URLImage.RESIZE_SCALE_TO_FILL)));
f.revalidate();
}
});
findProfNameLabel(f).setText(me.getName());
findProfAgeLabel(f).setText(me.getAge() + " Years old");
findProfPrefLabel(f).setText("Interested in " + me.getPref());
}
public Image getRoundedImage(Image img) {
int w = img.getWidth();
int h = img.getHeight();
Image maskImage = Image.createImage(w, h);
Graphics g = maskImage.getGraphics();
g.setColor(0xffffff);
g.fillArc(0, 0, w, h, 0, 360);
Object mask = maskImage.createMask();
Image ret = img.applyMask(mask);
return ret;
}
setUpProfile()方法在Form的beforeShow中调用。
编辑:我编辑了使用URLImage.createMaskAdapter的工作setUpProfile()方法。并实现圆润的图像。
public void setUpProfile(Form f) {
Label imageLabel = findMyImage(f);
Image mask = getImageFromRes("rounded-mask.png");
Image placeholder = getImageFromRes("myprofile.png").scaled(mask.getWidth(), mask.getHeight());
EncodedImage enc = EncodedImage.createFromImage(placeholder.applyMask(mask.createMask()),
false);
System.out.println("SetUpProfile picture " + me.getPicture());
imageLabel.setIcon(URLImage.createToStorage(enc, "profileImage8",
me.getPicture(), URLImage.createMaskAdapter(mask)));
findProfNameLabel(f).setText(me.getName());
findProfAgeLabel(f).setText(me.getAge() + " Years old");
findProfPrefLabel(f).setText("Interested in " + me.getPref());
}
你可以用'URLImage.createMaskAdapter()'这还要快。原始代码不起作用的原因是掩码有效地替换了图像。所以他创建了一个'URLImage',并且在它有机会获取数据之前,他用新的蒙版图像替换了它...... –
@ShaiAlmog我在使用URLImage.createMaskAdapter的新代码中进行了编辑。图像现在正在出现,但它不是圆形的。它仍然是一个正方形。 – Kyri33
删除主目录中的.cn1目录的内容,然后再试一次 –