gpt4 book ai didi

Libgdx 将图像裁剪为圆形

转载 作者:行者123 更新时间:2023-12-05 00:57:06 28 4
gpt4 key购买 nike

我正在寻找一种方法,将用户图库中拍摄的照片裁剪为圆形,基本上显示为个人资料图片。

我被推荐使用 Masking .
但我无法弄清楚如何实际做到这一点。除了 android 代码之外,几乎没有它的例子。但是由于我还要将我的游戏移植到 IOS,所以我需要一个 Libgdx 解决方案。

那么有没有人以前做过这个并且有一个可行的例子?

这是我获取图像的方法:

ublic void invokeGallery() {
if (utils != null) {
loading = true;
utils.pickImage(new utilsInterface.Callback() {
@Override
public ImageHandler onImagePicked(final InputStream stream) {
loading = true;
final byte[] data;
try {
data = StreamUtils.copyStreamToByteArray(stream);

Gdx.app.postRunnable(new Runnable() {
@Override
public void run() {


loading = false;
}
});


} catch (IOException e) {
e.printStackTrace();
}
loading = false;
return null;
}
});
}
}

最佳答案

我使用这个,它有效,但没有插值,这意味着边缘是像素化的。您可以选择实现插值或使用边框!

public static Pixmap roundPixmap(Pixmap pixmap)
{
int width = pixmap.getWidth();
int height = pixmap.getHeight();
Pixmap round = new Pixmap(pixmap.getWidth(),pixmap.getHeight(),Pixmap.Format.RGBA8888);
if(width != height)
{
Gdx.app.log("error", "Cannot create round image if width != height");
round.dispose();
return pixmap;
}
double radius = width/2.0;
for(int y=0;y<height;y++)
{
for(int x=0;x<width;x++)
{
//check if pixel is outside circle. Set pixel to transparant;
double dist_x = (radius - x);
double dist_y = radius - y;
double dist = Math.sqrt((dist_x*dist_x) + (dist_y*dist_y));
if(dist < radius)
{
round.drawPixel(x, y,pixmap.getPixel(x, y));
}
else
round.drawPixel(x, y, 0);
}
}
Gdx.app.log("info", "pixmal rounded!");
return round;
}

请记住,这一切都将不受管理!为了让生活更轻松,我通常保存图像并将其作为托管纹理加载。

关于Libgdx 将图像裁剪为圆形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34996283/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com