[英]How do I crop an image whose URI is known in Android?
我希望在圖像視圖中顯示的圖像被選擇為具有特定部分(並且僅選擇的部分需要突出顯示而其他部分需要半透明),並且該部分也可以根據需要調整大小或者由用戶在觸摸事件上完成。
現在,需要將圖像的選定部分弄皺,然后顯示並保存裁剪后的圖像。
編輯:
我使用Intent打開圖像並使用intent.putExtra(“crop”,“true”)裁剪它;
但是在傳遞意圖的同時,我想打開其URI已知的圖像,而不是打開整個圖庫的專輯。
任何人都可以建議,我如何通過意圖傳遞打開圖像打開特定的URI。 提前致謝。
關於問題的最后一部分,如果您使用的是最新的Gingerbread(2.3.3,API級別10),則可以使用BitmapRegionDecoder
來裁剪圖像。
它很有用,因為在此API存在之前,您必須在裁剪之前將整個圖像加載到內存中。 對於5mpix和8mpix相機,如果沒有子采樣,這通常是不可能的(即裁剪后的圖像會失去很多分辨率)。
更新:在編輯問題並更准確地描述問題后更改了我的答案。
您面臨的問題有很長的歷史,也是在SO:
無法在android中找到com.android.camera.CropImage活動
一個答案描述了您的需求。 請注意,您使用的是不屬於官方SDK的意圖,您可能會遇到不同類型的問題。 我經歷的問題是在相機拍攝圖像后立即使用裁剪。 此外,它不兼容不同的Android版本,所以如果你讓它工作1.5也許它不適用於2.3。 其他有用的鏈接:
看看我對這個問題的回答 。 它不涉及問題的觸摸調整大小方面,而是處理在原始圖像上繪制圖像的部分。
底線是,您不想使用ImageView,因為這主要用於顯示具有各種縮放屬性的靜態圖像。 最好使用帶有重寫draw()方法的自定義視圖。
用於裁剪圖像
private void cropImage() {
// Use existing crop activity.
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(capturedImageUri, IMAGE_UNSPECIFIED);
// Specify image size
intent.putExtra("outputX", IMAGE_DIMENSION);
intent.putExtra("outputY", IMAGE_DIMENSION);
// Specify aspect ratio, 1:1
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
// REQUEST_CODE_CROP_PHOTO is an integer tag you defined to
// identify the activity in onActivityResult() when it returns
startActivityForResult(intent, REQ_CODE_CROP_PHOTO);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.