PDA

View Full Version : مشکل در ذخیره تصویر



javadi3d
شنبه 17 خرداد 1393, 12:45 عصر
سلام
در کد زیر وقتی روی یک تصویر مثلا تصویر پنجمی(p5) کلیک کنم و روی button1 کلیک کنم تصویری با نام p5 ذخیره میشود ولی محتوای آن همان تصویر اولی است یعنی p1 و به همین ترتیب هر عکس دیگری را که انتخاب و ذخیره کنم دچار این مشکل میشود و همگی با محتوای عکس اول (همان p1) ذخیره میشوند.
به نظر شما مشکل از کجاست؟

این کدم:

public class Wallpaper extends Activity{ String extStorageDirectory = Environment.getExternalStorageDirectory().toString ();
private Gallery gallery;
private ImageView imgView;
int mposition;
Bitmap bm;
private Integer[] Imgid = {
R.drawable.p1, R.drawable.p2, R.drawable.p3, R.drawable.p4,R.drawable.p5,
R.drawable.p6, R.drawable.p7, R.drawable.p8,R.drawable.p9, R.drawable.p10,
R.drawable.p11, R.drawable.p12,R.drawable.p13, R.drawable.p14, R.drawable.p15,
R.drawable.p16,R.drawable.p17, R.drawable.p18, R.drawable.p19, R.drawable.p20
};

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.wallpaper);

imgView = (ImageView)findViewById(R.id.ImageView01);
imgView.setImageResource(Imgid[0]);

gallery = (Gallery) findViewById(R.id.examplegallery);
gallery.setAdapter(new AddImgAdp(this));


gallery.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id) {
imgView.setImageResource(Imgid[position]);
mposition=position;
}
});
bm = BitmapFactory.decodeResource( getResources(), Imgid[mposition]);
Button b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

OutputStream outStream = null;
File file = new File(extStorageDirectory,getPicName(Imgid[mposition])+".jpg");
try {
outStream = new FileOutputStream(file);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
bm.compress(Bitmap.CompressFormat.JPEG, 100, outStream);

try {
outStream.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
outStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
Button b1 = (Button) findViewById(R.id.button2);
b1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
WallpaperManager wallpaperManager = WallpaperManager.getInstance(Wallpaper.this);
Drawable drawable = getResources().getDrawable(Imgid[mposition]);
Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
try {
wallpaperManager.setBitmap(bitmap);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
});

}
public class AddImgAdp extends BaseAdapter {
int GalItemBg;
private Context cont;


public AddImgAdp(Context c) {
cont = c;
TypedArray typArray = obtainStyledAttributes(R.styleable.GalleryTheme);
GalItemBg = typArray.getResourceId(R.styleable.GalleryTheme_an droid_galleryItemBackground, 0);
typArray.recycle();
}


public int getCount() {
return Imgid.length;
}


public Object getItem(int position) {
return position;
}


public long getItemId(int position) {
return position;
}


public View getView(int position, View convertView, ViewGroup parent) {
ImageView imgView = new ImageView(cont);


imgView.setImageResource(Imgid[position]);
imgView.setLayoutParams(new Gallery.LayoutParams(80, 70));
imgView.setScaleType(ImageView.ScaleType.FIT_XY);
imgView.setBackgroundResource(GalItemBg);


return imgView;
}
}
public String getPicName(int id_drawable) {

String getName = "";
Field[] ID_Fields = R.drawable.class.getFields();

try {
for (Field field : ID_Fields) {
if (field.getInt(null) == id_drawable) {
getName = field.getName();
break;
}
}
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}

return getName;
}
}