我试图在Facebook上传图像,但是当它即将发布时,图像会被像素化,但是当帖子成功时图像如果没有像素化则是正确的图像。如何修复将发送到Facebook上传图片的图片?
Bitmap bitmap= BitmapFactory.decodeResource(getResources(), img2[res2]);
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+"/LatestShare.jpg";
OutputStream out = null;
File file=new File(path);
try {
out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
path=file.getPath();
Uri bmpUri = Uri.parse("file://"+path);
Intent shareIntent = new Intent();
shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri);
shareIntent.setType("image/jpg");
startActivity(Intent.createChooser(shareIntent,"Share with"));
答案 0 :(得分:0)
不处理图像。现在,您正在解码图像,然后将其重新编码为JPEG。
相反,在openRawResource()
上使用Resources()
获取资源上的InputStream
,然后使用普通Java文件I / O将该内容复制到FileOutputStream
。完成后,请务必flush()
,getFD().sync()
和close()
FileOutputStream
。
然后,确保shareIntent
中的MIME类型与可绘制资源的实际MIME类型匹配。如果您的资源是JPEG,那么您现在拥有的资源就可以了。
此外:
不要使用连接来创建文件路径。使用File
构造函数。这可确保您正确处理目录分隔符。
使用Uri.fromFile()
将File
转换为Uri
,而非字符串连接。
除非您认为用户希望此图片与其余照片并排放置,否则请勿使用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
。相反,请使用getExternalCacheDir()
(Context
上提供),这样就不会使用户的图库混乱等。
但是,最终,您的位图质量仅由您部分控制。您发送给它的应用程序欢迎使用位图执行任何操作,“无论它想要什么”都可能影响质量。除了与其他应用程序作者的文件错误报告之外,您无能为力。
另一个更复杂的可能性是您实现流ContentProvider
,以避免将数据写入外部存储上的文件,因此期望第三方应用将READ_EXTERNAL_STORAGE
作为权限。
答案 1 :(得分:0)
您似乎拥有(图像文件的)资源ID,您正试图从中获取图像文件。
resources.getResourceName(ID)获取一个ID并返回文件名的字符串表示形式。
让我们使用这些信息。因为,我们需要拥有资源ID并需要获取URI,
Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" +
context.getResources().getResourcePackageName(resourceID) + '/' +
context.getResources().getResourceTypeName(resourceID) + '/' +
context.getResources().getResourceEntryName(resourceID) );
应该给出URI。地方可能需要进行小的修正。请随时编辑我的答案以反映相同的内容。
无需压缩。耶!
这有帮助吗?
答案 2 :(得分:0)
就像这样使用intent发送位图目录
[request setValue:@"Your GW-Token Value" forHTTPHeaderField:@"GW-Token"];
使用Bitmap photo = BitmapFactory.decodeFile(picturePath);
Bitmap imageBitmap= ReSizeBitmap.getResizedBitmap(photo, 300, 300);
答案 3 :(得分:0)
我试图在Facebook上传图像,但是当它即将被发布时,图像会被像素化,但是当帖子成功时,图像如果没有像素化则是正确的图像。如何修复将发送到Facebook上传图片的图片?
当您发布图像时,图像会被Facebook像素化?这没有什么不对,这就是他们设计它的方式。你可以从你的最后做什么