2011-01-07 2 views
1

이미지를 잘라내어 일부만 잘라냅니다. 그러나 Android는 반환 된 이미지를 배경 화면으로 설정합니다. 왜? 나는 안드로이드 코드를 추적하고, Gallery3D 응용 프로그램 (com.cooliris)에서,이 발견 :안드로이드가 배경 화면으로 I 자르기 이미지를 설정합니다.

// TODO: A temporary file is NOT necessary 
    // The CropImage intent should be able to set the wallpaper directly 
    // without writing to a file, which we then need to read here to write 
    // it again as the final wallpaper, this is silly 
    mTempFile = getFileStreamPath("temp-wallpaper"); 
    mTempFile.getParentFile().mkdirs(); 

    int width = getWallpaperDesiredMinimumWidth(); 
    int height = getWallpaperDesiredMinimumHeight(); 
    intent.putExtra("outputX", width); 
    intent.putExtra("outputY", height); 
    intent.putExtra("aspectX", width); 
    intent.putExtra("aspectY", height); 
    intent.putExtra("scale", true); 
    intent.putExtra("noFaceDetection", true); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTempFile)); 
    intent.putExtra("outputFormat", Bitmap.CompressFormat.PNG.name()); 
    // TODO: we should have an extra called "setWallpaper" to ask CropImage 
    // to set the cropped image as a wallpaper directly. This means the 
    // SetWallpaperThread should be moved out of this class to CropImage 

마지막 라인에 집중하십시오, 할 일을. 농작물 의도가 설정 작업을 수행 할 것이라고 알려줍니다. 음, 나는 그것을 전혀 필요로하지 않는다. 그래서, 벽지를 설정하지 않고 이미지를 자르는 방법은? 감사!

답변

1

코드 (그들은 자신의 갤러리/카메라를 사용하기 때문에이 HTC처럼, 모든 휴대 전화에서 작동하지 않습니다 염두에두고이 작업을 수행합니다.

File f = new File(Environment.getExternalStorageDirectory(), "/temporary_holder.png"); 
f.createNewFile(); 
Intent intent = new Intent("com.android.camera.action.CROP"); 
intent.setClassName("com.android.gallery", "com.android.camera.CropImage"); 
intent.setType("image/*"); 
intent.setData(ImageToSetUri); // Local URI of your image 
intent.putExtra("crop", true); 
intent.putExtra("outputX", width); // width/height of your image 
intent.putExtra("outputY", height); 
intent.putExtra("aspectX", width); 
intent.putExtra("aspectY", height); 
intent.putExtra("scale", true); 
intent.putExtra("noFaceDetection", true); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f)); 
intent.putExtra("outputFormat", Bitmap.CompressFormat.PNG.name()); 
startActivityForResult(intent, 1); 

을 다음 이렇게 비트 맵으로 이미지를 검색 할 수 또는 원하는 경우

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == Activity.RESULT_OK) 
      if (data != null) { 
       Bitmap selectedImage = BitmapFactory.decodeFile(f);  
      } 
}