1번파일에서
png = (Button)findViewById(R.id.png);
png.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String pngPath = "/mnt/sdcard/picture/temp1.jpg";
Intent intent = new Intent(ImageEdit.this,MakePng.class);
intent.putExtra("pngPath", pngPath);
startActivityForResult(intent, MAKEPNG);
}
}); 버튼을 누르면 인텐트로 값이 넘어가게 하였습니다.
그다음 함수로
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) {
return;
}
else if (requestCode == CROP_FROM_ALBUM && resultCode == RESULT_OK)
{
Bundle extras = data.getExtras();
if(extras != null)
{
Bitmap photo = extras.getParcelable("data");
imageV.setImageBitmap(photo);
}
// 임시 파일 삭제
File f = new File(CameraPR.uri.getPath());
if(f.exists())
{
f.delete();
}
}
else if(requestCode == MAKEPNG && resultCode == RESULT_OK)
{
try{
Uri uri = data.getData();
Cursor d = getContentResolver().query(Uri.parse(uri.toString()), null, null, null, null);
d.moveToNext();
String pngPath = d.getString(d.getColumnIndex(MediaStore.MediaColumns.DATA));
Intent i = new Intent(ImageEdit.this,MakePng.class);
i.putExtra("pngPath", pngPath);
startActivity(i);
}catch (Exception e) {
e.printStackTrace();
}
}
} 액티비티 리절트 함수를 이렇게 사용했습니다. 엘스이프문에 걸리는거인데요
2번파일에서
package com.CameraPR;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.WindowManager;
import android.widget.ImageView;
public class MakePng extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.makepng);
// TODO Auto-generated method stub
DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager wm = (WindowManager)this.getSystemService(Context.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(displayMetrics);
final int width = displayMetrics.widthPixels;
final int height = displayMetrics.heightPixels;
ImageView MakePng = (ImageView) findViewById(R.id.pngview);
Intent intent = getIntent();
Bundle extras = intent.getExtras();
String pngPath = extras.getString("pngPath");
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap bmp = BitmapFactory.decodeFile(pngPath, options);
Bitmap resized = Bitmap.createScaledBitmap(bmp, width, height, true);
MakePng.setImageBitmap(resized);
}
}
String pngPath = "/mnt/sdcard/image/temp.jpg";
Intent intent = new Intent(ImageEdit.this,MakePng.class);
intent.putExtra("pngPath", pngPath);
startActivity(intent);
이렇게 1번파일에 버튼누르면 이렇게 수정했구요 다음 2번파일에서
Intent intent = getIntent();
Bundle extras = intent.getExtras();
String pngPath = extras.getString("pngPath");
System.out.printf("%s",pngPath);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap bmp = BitmapFactory.decodeFile(pngPath, options);
Bitmap resized = Bitmap.createScaledBitmap(bmp, width, height, true);
MakePng.setImageBitmap(resized);이렇게 받는데 ;;;; ㅎㅐ결이 안되네요 저 onActivityForResult 인가? 이건 아예 안썻서요
로그만 본다면 ...
Bitmap bmp = BitmapFactory.decodeFile(pngPath, options);
bmp 가 제대로 생성되지 않은 듯 합니다..
pngPath와 bmp만 확인하시면 될 듯 합니다..