Emr*_*can 6 java android facebook libgdx
我正在尝试将一个简单的Facebook个人资料图片请求功能实现到正在使用Libgdx引擎开发的游戏中.我想获得所需的图片,并最终在屏幕上显示.我希望这可以在我的桌面和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);
Run Code Online (Sandbox Code Playgroud)
由于图像是下载的图像,我没有选择使用软件将图像转换为常规的jpeg或png格式.我已经尝试使用ImageIO软件包(在其他一些软件包中)解码图像,但它也无法处理渐进式jpeg.我无法找到适用于这两种平台的解决方案.
有什么建议可以解决这个问题?至少,如果我可以为Android处理它,也许我可以想到桌面实现的其他东西.
这不是问题的确切解决方案,但我所做的是;
我决定在桌面实现中放置静态图像,并下载 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);
Run Code Online (Sandbox Code Playgroud)
然后我从 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();
Run Code Online (Sandbox Code Playgroud)
现在可以使用字节数组创建一个 Pixmap 对象并加载图像。
| 归档时间: |
|
| 查看次数: |
1602 次 |
| 最近记录: |