gpt4 book ai didi

java - 使用带有 Android SDK 的 Graph API 将图片上传到 Facebook

转载 作者:行者123 更新时间:2023-11-30 04:38:10 26 4
gpt4 key购买 nike

我正在尝试使用 graph api 将照片上传到 facebook 并不断收到 OutOfMemory 异常。上传代码是这样的:

private void PostPhoto(SessionHandler facebook, Uri photoUri)
{
Bundle params = new Bundle();
ByteArrayOutputStream bos = new ByteArrayOutputStream();

String realPath = getRealPathFromURI(photoUri);
Bitmap bitmap = BitmapFactory.decodeFile(realPath);

bitmap.compress(CompressFormat.JPEG, 100, bos);

params.putByteArray("picture", bos.toByteArray());


try
{
facebook.mFacebook.request("me/photos", params, "POST");

} catch (FileNotFoundException fileNotFoundException)
{

} catch (MalformedURLException malformedURLException)
{

} catch (IOException ioException)
{

}

}

异常在 decodeFile 函数上引发,有时在调用此行时在 facebook SDK 本身中引发:

return Util.openUrl(url, httpMethod, parameters);

在请求函数中。

应用通过 ACTION_SEND Intent 获取图片 content://Uri。getRealPathFromURI() 用于将 content://uri 转换为真实的 sdcard 路径。

有什么想法吗?

最佳答案

试试这个,它对我有用:

byte[] data = null;
try {
ContentResolver cr = mainActivity.getContentResolver();
InputStream fis = cr.openInputStream(photoUri);
Bitmap bi = BitmapFactory.decodeStream(fis);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
data = baos.toByteArray();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Bundle params = new Bundle();
params.putString("method", "photos.upload");
params.putByteArray("picture", data);

这是使用 Rest API,facebook sdk 有调用它的方法,所以只需更改您的请求行:

facebook.mFacebook.request("me/photos", params, "POST");   

到:

facebook.mFacebook.request(params);   

希望这能解决问题。

关于java - 使用带有 Android SDK 的 Graph API 将图片上传到 Facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6478572/

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