2010-12-05 12 views
2

画像処理の一部をコア機能とするアプリケーションを作成します。 は私もギャラリーで利用できる携帯電話のメモリ/ SDカードにダウンロードまたは作成した画像を保存することができIT-Androidアプリケーションでの画像処理

  • で物事を次の操作を行いたいということでしょう。
  • サイズ変更、トリミング、回転などの画像にいくつかの効果を適用する
  • 透明なPNGの形式になるデザインテンプレートがあります。これらを重ねて効果または新しいデザインを作成しますファンシーなフォトフレームなど)、ある時点ではいつでもPNGとしてフラットにして保存する必要があります。

私はこれらのことをきちんと実行する方法を探しています。

Androidは、APIやウィジェットのレベルの詳細を気にせずに、簡単にビジネスロジックを実装することができます。

私の要件に利用できるものはありますか?

お知らせください。 ありがとう!

答えて

3
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
thiz = this; 
setContentView(R.layout.main); 
mBtn = (Button) findViewById(R.id.btnLaunch); 
photo = (ImageView) findViewById(R.id.imgPhoto); 
mBtn.setOnClickListener(new OnClickListener(){ 

public void onClick(View v) { 
try { 
// Launch picker to choose photo for selected contact 
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null); 
intent.setType("image/*"); 
intent.putExtra("crop", "true"); 
intent.putExtra("aspectX", aspectX); 
intent.putExtra("aspectY", aspectY); 
intent.putExtra("outputX", outputX); 
intent.putExtra("outputY", outputY); 
intent.putExtra("scale", scale); 
intent.putExtra("return-data", return_data); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri()); 
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); 
intent.putExtra("noFaceDetection",!faceDetection); // lol, negative boolean noFaceDetection 
if (circleCrop) { 
intent.putExtra("circleCrop", true); 
} 

startActivityForResult(intent, PHOTO_PICKED); 
} catch (ActivityNotFoundException e) { 
Toast.makeText(thiz, R.string.photoPickerNotFoundText, Toast.LENGTH_LONG).show(); 
} 
} 
}); 

} 

private Uri getTempUri() { 
return Uri.fromFile(getTempFile()); 
} 

private File getTempFile() { 
if (isSDCARDMounted()) { 

File f = new File(Environment.getExternalStorageDirectory(),TEMP_PHOTO_FILE); 
try { 
f.createNewFile(); 
} catch (IOException e) { 
// TODO Auto-generated catch block 
Toast.makeText(thiz, R.string.fileIOIssue, Toast.LENGTH_LONG).show(); 
} 
return f; 
} else { 
return null; 
} 
} 

private boolean isSDCARDMounted(){ 
String status = Environment.getExternalStorageState(); 

if (status.equals(Environment.MEDIA_MOUNTED)) 
return true; 
return false; 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
super.onActivityResult(requestCode, resultCode, data); 

switch (requestCode) { 
case PHOTO_PICKED: 
if (resultCode == RESULT_OK) { 
if (data == null) { 
Log.w(TAG, "Null data, but RESULT_OK, from image picker!"); 
Toast t = Toast.makeText(this, R.string.no_photo_picked, 
Toast.LENGTH_SHORT); 
t.show(); 
return; 
} 

final Bundle extras = data.getExtras(); 
if (extras != null) { 
File tempFile = getTempFile(); 
// new logic to get the photo from a URI 
if (data.getAction() != null) { 
processPhotoUpdate(tempFile); 
} 
} 
} 
break; 
} 
} 

これは画像を切り抜くために使用されます。または http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/2.2_r1.1/com/android/camera/CropImage.javaこのリンクをチェックしてください

+0

このコードは、カメラから撮影した画像を操作するものに似ていますが、私の一般的なシナリオでは、ローカルストレージ、ウェブ、およびもっと。私は私の目的のためにこのコードを変換できることを願っています。ありがとう! –

+0

ああ、そうではありません。申し訳ありませんが、初めて注意深く読んでいませんでした。それは確かに私の友人を助けるだろう。ありがとう! –