gpt4 book ai didi

java - 在 Libgdx 中处理渐进式 jpeg 图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:47:08 26 4
gpt4 key购买 nike

我正在尝试在使用 Libgdx 引擎开发的游戏中实现一个简单的 Facebook 个人资料图片请求功能。我想获取请求的图片并最终显示在屏幕上。最好,我希望它在我的桌面和 Android 实现上都能工作。

当我尝试使用个人资料图片创建 Pixmap 对象时出现问题,因为个人资料图片是渐进式 jpeg,libgdx 无法加载。示例代码:

inStream = new URL(url).openStream();
byte[] buffer = new byte[1024 * 200];
int readBytes = 0;
while (true) {
int length = inStream.read(buffer, readBytes, buffer.length - readBytes);
if (length == -1)
break;
readBytes += length;
}
Pixmap pixmap = new Pixmap(buffer, 0, readBytes);

由于图像是下载的,我无法使用软件将图像转换为常规的 jpeg 或 png 格式。我试过使用 ImageIO 包(以及其他包)来解码图像,但它也无法处理渐进式 jpeg。我找不到适用于这两个平台的解决方案。

有什么解决这个问题的建议吗?至少,如果我可以为 Android 处理它,也许我可以为桌面实现想出其他办法。

最佳答案

这不是问题的确切解决方案,但我所做的是;

我决定在 Desktop 实现中放置静态图片,并为 Android 实现下载个人资料图片。

首先,我获取图片并将其解码为位图。示例代码:

URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);

然后我从 Bitmap 对象创建一个字节数组,如下所示:

ByteArrayOutputStream outStream;
int size = myBitmap.getWidth() * myBitmap.getHeight() * 2;

while (true) {
outStream = new ByteArrayOutputStream(size);
if (myBitmap.compress(Bitmap.CompressFormat.PNG, 0, outStream))
break;
size = size * 3 / 2;
}
byte[] buffer = outStream.toByteArray();

现在可以使用字节数组创建一个 Pixmap 对象并加载图像。

关于java - 在 Libgdx 中处理渐进式 jpeg 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17189368/

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