我按照这个从网络视图中捕获或选择文件并上传。。。这是完美的,适用于所有android版本。。
所以在那里,我想添加作物意图。。。在相机拍摄/画廊后进行裁剪,然后从Webview上传所有这些内容
我想为Crop Image添加以下内容:。。我想在MainActivity中添加这个。。以相机和画廊的形式拍摄。。
Intent cropIntent = new Intent("com.android.camera.action.CROP");
// indicate image type and Uri
cropIntent.setDataAndType(data.getData(), "image/*");
cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri());
cropIntent.putExtra("outputFormat",
Bitmap.CompressFormat.JPEG.toString());
// set crop properties
cropIntent.putExtra("crop", "true");
// indicate aspect of desired crop
cropIntent.putExtra("aspectX", 1);
cropIntent.putExtra("aspectY", 1);
// indicate output X and Y
cropIntent.putExtra("outputX", 256);
cropIntent.putExtra("outputY", 256);
// retrieve data on return
cropIntent.putExtra("return-data", true);
// start the activity - we handle returning in
// onActivityResult
startActivityForResult(cropIntent, 3);
所以我想裁剪并上传的可能是相机或画廊。。
有谁能建议我如何在主要活动中添加作物意图吗。。
更新1
我有一个意图来捕捉相机和视图画廊...以类似的方式,我有作物意图的选项...但是我想将这种作物应用于相机意图和画廊,但所有这些都需要发生在webview(主活动)...
请检查我的主要活动。。。在回答之前。。
我想从相机意图和画廊意图中添加裁剪意图。。它应该可以上传。。。以最小的分辨率。。。不超过200万像素。。如果不到也没问题。。。像这样的位图。。。
在更新中,我再次添加了相同的链接,请不要感到困惑。。。
所有这些都需要在webview中裁剪和上传。。。
更新二
有没有可能在我的主要活动中使用这个库。。。如果从网络视图截取摄像头并在同一网络视图中上载。。。
你可以用简单的方法做到:
首先使用intent to camera拍摄图像,
Intent intentCamera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intentCamera, Constants.CAMERA_REQUEST_CODE);
在onActivityResult()中,您可以捕获结果,它将返回捕获图像的url。
然后,你就可以用意念来抓拍图片了:
private void callCrop(Uri sourceImage) {
CropImageIntentBuilder cropImage = new CropImageIntentBuilder(200, 200, getURL());
cropImage.setOutlineColor(Color.WHITE);
cropImage.setSourceImage(sourceImage);
cropImage.setDoFaceDetection(false);
startActivityForResult(cropImage.getIntent(this), Constants.CROP_REQUEST_CODE);
}
您将在ActivityResult()上再次获得交叉图像。
CropImageIntentBuilder源代码位于github上。请找到下面的链接
https://github.com/lvillani/android-cropimage/blob/master/CropImage/src/main/java/com/android/camera/CropImageIntentBuilder.java
更新:
你可以在点击按钮等动作中激发相机的意图,我希望你能把按钮放在活动中。
camerBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Intent intentCamera = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intentCamera, Constants.CAMERA_REQUEST_CODE);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Bitmap saveBitmap = null;
if (resultCode == RESULT_OK) {
if (requestCode == Constants.CAMERA_REQUEST_CODE) {
if (data != null) {
Uri currentImageUri = data.getData();
if (currentImageUri != null) {
Bitmap currentBitmap = uriToBitmap(currentImageUri);
Bitmap rotatedBitmap = rotateImage(currentBitmap, 90); // Rotate bitmap by 90' to avoid the orientation change of image.
saveImageToFile(rotatedBitmap); // save bitmap with rotation of 90' .
callCrop(getURL());
}
} else {
return;
}
} else if (requestCode == Constants.CROP_REQUEST_CODE) {
saveBitmap = BitmapFactory.decodeFile(getFile().getAbsolutePath());
String convertedImage = Utils.bitMapToString(saveBitmap);
}
super.onActivityResult(requestCode, resultCode, data);
}
/**
* To get Bitmap from respective Uri.
*
* @param selectedFileUri
* @return bitmap
*/
private Bitmap uriToBitmap(Uri selectedFileUri) {
Bitmap image = null;
try {
ParcelFileDescriptor parcelFileDescriptor =
getContentResolver().openFileDescriptor(selectedFileUri, "r");
FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
parcelFileDescriptor.close();
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
/**
* To rotate bitmap by an given angle(in degree).
*
* @param img bitmap which you want to rotate.
* @param degree
* @return rotated bitmap.
*/
private static Bitmap rotateImage(Bitmap img, int degree) {
Matrix matrix = new Matrix();
matrix.postRotate(degree);
Bitmap rotatedImg = Bitmap.createBitmap(img, 0, 0, img.getWidth(), img.getHeight(), matrix, true);
img.recycle();
return rotatedImg;
}
我希望现在对你更有意义。
首先,在gradle文件中添加依赖项:
compile 'com.soundcloud.android:android-crop:1.0.1@aar'
然后,下面是裁剪图像的逻辑。将此方法放入Activity类中,并从Activity调用此方法。根据您的要求,可以单击某些按钮,传递图像的URI。
private void beginCrop(Uri source) {
Uri destination = Uri.fromFile(new File(getCacheDir(), "cropped"));
Crop.of(source, destination).asSquare().start(this);
}
裁剪图像后,您将在活动的onActivityResult中获得结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent result) {
if (requestCode == Crop.REQUEST_CROP) {
handleCrop(resultCode, result);
}
}
之后
private void handleCrop(int resultCode, Intent result) {
if (resultCode == RESULT_OK) {
ImageView.setImageURI(Crop.getOutput(result));
} else if (resultCode == Crop.RESULT_ERROR) {
Toast.makeText(this, Crop.getError(result).getMessage(), Toast.LENGTH_SHORT).show();
}
我希望这对你有用。
嘿,谢谢你抽出时间。在我的页面中,我的应用程序的webview中加载的是照片上传: 它上传一张照片,如果你通常图片你的画廊等... 如果我点击这个输入,我可以选择一张图片,然后网站检测到更改(js:onchange)。我已经尝试了一些东西,但在我选择它之后它不会上传图片。下面是我对imgupload的编码: 我希望你能帮忙,祝你今天过得愉快
我正在开发一个应用程序,我需要有一个对话框选择从画廊或相机上传图像。我在对话框中找到了一种从图库或相机中选择图像的解决方案,但问题是在比较用户选择哪种操作时存在冲突。 我想知道我是否可以在这段代码中进行修改,并得到一些结果来区分选择了画廊还是相机,然后应用动作。
本文向大家介绍iOS实现裁剪框和图片剪裁功能,包括了iOS实现裁剪框和图片剪裁功能的使用技巧和注意事项,需要的朋友参考一下 图片处理中经常用的图片剪裁,就是通过剪裁框确定图片剪裁的区域,然后剪去该区域的图片,今天实现了一下,其实图片剪裁本身不难,主要剪裁框封装发了点时间,主要功能可以拖动四个角缩放,但不能超出父视图,拖动四个边单方向缩放,不能超出父视图,拖动中间部分单单移动,不改变大小,不能超出父
此应用程序中的WebView会打开一个带有上载按钮的页面。 下面是一个代码块,可以打开一个对话框从gallery或camera上传图像。 在我的活动中,我有: 在onCreate中,我有以下内容: 文件浏览器和图库正在按预期工作。问题是,当我用相机拍照时,它没有上载到“选择文件”选项中,该选项显示状态“未选择文件”。 选择相机时: 使用相机拍摄快照:出现返回和检查选项。 关于选择检查标记: 文件未
如果我想从本机相机捕捉图像,我可以这样做: 如果我想从图库中获取图像,我可以这样做: 有什么示例代码可以做到吗?谢了。
本文向大家介绍Android开发从相机或相册获取图片裁剪,包括了Android开发从相机或相册获取图片裁剪的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接给大家贴代码了。 以上代码很简单,相信大家都可以看的懂吧,欲了解更多信息请持续关注本站,谢谢。