我希望我的代码在保存之前调整图片大小,但我在Google上找不到任何相关内容。 你能帮帮我吗?
这是代码(来自Android doc):
private void galleryAddPic() {
Intent mediaScanIntent = new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE");
File f = new File(mCurrentPhotoPath);
picturePathForUpload = mCurrentPhotoPath;
Uri contentUri = Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
this.sendBroadcast(mediaScanIntent);
}
之后,我必须将其上传到服务器。
非常感谢。
答案 0 :(得分:28)
您可以按照代码
保存位图图像Bitmap photo = (Bitmap) "your Bitmap image";
photo = Bitmap.createScaledBitmap(photo, 100, 100, false);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
File f = new File(Environment.getExternalStorageDirectory()
+ File.separator + "Imagename.jpg");
f.createNewFile();
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
fo.close();
答案 1 :(得分:5)
在阅读了其他答案而没有找到我想要的内容后,我的方法是获取适当缩放的位图。这是对Prabu答案的改编。
确保您的照片缩放的方式不会影响照片的尺寸:
{{1}}
这是我的GitHub要点的相应链接:https://gist.github.com/Lwdthe1/2d1cd0a12f30c18db698
答案 2 :(得分:4)
首先将图片转换为位图,然后使用以下代码:
Bitmap yourBitmap;
Bitmap resized = Bitmap.createScaledBitmap(yourBitmap, newWidth, newHeight, true);
答案 3 :(得分:1)
See this 这将是完整的帮助。一般情况下,如果您使用意图通过相机拍摄图像,您将获得uri
图像作为结果,您将其视为缩小图像并将其存储在同一位置
答案 4 :(得分:0)
如果您想拍摄完整尺寸的图像,那么您别无选择,只能将其保存到SD卡中,然后更改图像的大小。
如果缩略图图像足够,则无需将其保存到SD卡,您可以从返回的意图的附加内容中提取它。
您可以查看我为使用内置摄像头构建图像的两种方法编写的本指南Activity
:
Guide: Android: Use Camera Activity for Thumbnail and Full Size Image
答案 5 :(得分:0)
BitmapFactory.Options optionsSignature = new BitmapFactory.Options();
final Bitmap bitmapSignature = BitmapFactory.decodeFile(
fileUriSignature.getPath(), optionsSignature);
Bitmap resizedSignature = Bitmap.createScaledBitmap(
bitmapSignature, 256, 128, true);
signature.setImageBitmap(resizedSignature);