有人可以发布如何使用相机,捕获图像,在图像视图中预览图像,以jpg压缩图像并将字节上传到远程服务器的示例吗?我能找到的最接近的是下面。我们有相机和图像捕捉,但我们需要知道如何预览,压缩/调整jpg到640 / 480px和大约120kb大小,然后将字节上传到远程服务器。感谢大家的帮助。 http://android-coding.blogspot.com/2010/12/intent-of-mediastoreactionimagecapture.html
答案 0 :(得分:1)
查看您的代码,我发现有些事情是错误的:
- [用于相机功能] -
您正在检索字符串值变量以获取完整图像的URI?只需保存你从我的第一点的代码作为属性得到URI(让我们说“myPhotoURI”的活动课。在处理你的相机意图结果OnActivityResult功能只是记得,URI,并把它作为下(是的,你'正确看待它;我甚至没有使用数据意图只是为了记住uri):
Bitmap imageFromCam = MediaStore.Images.Media.GetBitmap(this.ContentResolver, Android.Net.Uri.Parse(myPhotoURI));
要抓住从图库的图像只使用SelectImageFromStorage()函数from this question's answer,并在检索所选择的图像的URI OnActivityResult检查只需使用:
Android.Net.Uri selectedImageUri = data.ToURI();
这对我来说就像是一种魅力。
- [将数据发送到网络服务] -
假设您正在使用WCF或Web服务,并希望将图像数据作为字节数组接收;批准的答案to this question提供了一个很好的例子,说明如何将图像转换为字节数组(无论如何,这是WCF Web服务所需要的)
我认为这些指示会让你前进。
答案 1 :(得分:0)
这是迄今为止最接近的例子......当使用额外输出时,这会带回Null数据。仍然试图访问完整的图像/照片而不是缩略图。
private void saveFullImage() {
Intent intent = new Intent(Android.Provider.MediaStore.ActionImageCapture);
string file = System.IO.Path.Combine(Android.OS.Environment.DirectoryDcim.ToString(), "test.jpg");
var outputFileUri = Android.Net.Uri.Parse(file);
intent.PutExtra(Android.Provider.MediaStore.ExtraOutput, outputFileUri);
StartActivityForResult(intent, TAKE_PICTURE);
}
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (requestCode == TAKE_PICTURE)
{
Uri imageUri = null;
// Check if the result includes a thumbnail Bitmap
if (data != null)
{
if (data.HasExtra("data"))
{
var thumbnail = data.GetParcelableArrayExtra("data");
// TODO Do something with the thumbnail
}
}
else
{
var outputFileUri = data.GetParcelableArrayExtra("outputFileuri");
// TODO Do something with the full image stored
// in outputFileUri
}
}
}