インターネットから直接取得した丸みを帯びた画像を表示しようとしています。以下のコードを使用して丸いマスクを作成し、インターネットから画像を取得してから、画像またはラベル自体にマスクを設定しようとしました。これらのアプローチはどれも機能しませんでした。マスクを外すと、画像は正常に表示されます。マスクを設定するコードを保持すると、空の白い円が表示されます。
画像自体にマスクを適用すると、マスクが適用された時点で画像がダウンロードされていないため、有効にならない可能性があるという考えがあります。
setMask
しかし、ラベルの呼び出しも機能しない理由がわかりません。
// Create MASK
Image maskImage = Image.createImage(w, l);
Graphics g = maskImage.getGraphics();
g.setAntiAliased(true);
g.setColor(0x000000);
g.fillRect(0, 0, w, l);
g.setColor(0xffffff);
g.fillArc(0, 0, w, l, 0, 360);
Object mask = maskImage.createMask();
// GET IMAGE
com.cloudinary.Cloudinary cloudinary = new com.cloudinary.Cloudinary(ObjectUtils.asMap(
"cloud_name", "REMOVED",
"api_key", "REMOVED",
"api_secret", "REMOVED"));
// Disable private CDN URLs as this doesn't seem to work with free accounts
cloudinary.config.privateCdn = false;
Image placeholder = Image.createImage(150, 150);
EncodedImage encImage = EncodedImage.createFromImage(placeholder, false);
Image img2 = cloudinary.url()
.type("fetch") // Says we are fetching an image
.format("jpg") // We want it to be a jpg
.transformation(
new Transformation()
.radius("max").width(150).height(150).crop("thumb").gravity("faces").image(encImage, "http://upload.wikimedia.org/wikipedia/commons/4/46/Jennifer_Lawrence_at_the_83rd_Academy_Awards.jpg");
Label label = new Label(img2);
label.setMask(mask); // also tried to do img2.applyMask(mask); before passing img2