Libgdx将图像裁剪为圆形
我正在寻找一种方法,将从用户库中拍摄的照片裁剪成圆形,基本上显示为个人资料图片 我被推荐使用。 但我不知道该怎么做。除了android代码外,几乎没有其他的例子。但是因为我也要将我的游戏移植到IOS上,所以我需要一个Libgdx解决方案 那么以前有没有人这样做过,也许有一个有效的例子 以下是我将如何获取图像:Libgdx将图像裁剪为圆形,libgdx,crop,Libgdx,Crop,我正在寻找一种方法,将从用户库中拍摄的照片裁剪成圆形,基本上显示为个人资料图片 我被推荐使用。 但我不知道该怎么做。除了android代码外,几乎没有其他的例子。但是因为我也要将我的游戏移植到IOS上,所以我需要一个Libgdx解决方案 那么以前有没有人这样做过,也许有一个有效的例子 以下是我将如何获取图像: ublic void invokeGallery() { if (utils != null) { loading = true; utils.pi
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;
}
publicstaticpixmap roundPixmap(Pixmap-Pixmap)
{
int width=pixmap.getWidth();
int height=pixmap.getHeight();
Pixmap round=新的Pixmap(Pixmap.getWidth(),Pixmap.getHeight(),Pixmap.Format.rgba888);
如果(宽度!=高度)
{
Gdx.app.log(“错误”,“如果宽度=高度,则无法创建圆形图像”);
round.dispose();
返回pixmap;
}
双半径=宽度/2.0;
对于(int y=0;有很多方法)。考虑添加一个你想要它看起来像的屏幕截图。如果你看到Instagram上的圆形轮廓图像,可能的X-opPA的复制品,这正是我想要的。我添加了一个代码片段来展示我如何返回字节数据,这可能取决于我选择的方法。