[英]Saving an image to sd card from android pager
I have a pager activity in my android application I need to save the images according to there position in the pager. 我的Android应用程序中有一个寻呼机活动,我需要根据寻呼机中的位置保存图像。 I managed to do the saving part but when iam in the first image i click save it saves the second image same for the second image it save the third i dont know whats wrong with my code!
我设法做了保存部分,但是当我在第一张图片中单击“保存”时,它保存的第二张图片与第二张图片相同,保存了第三张图片,我不知道我的代码有什么问题! `
`
enter code here
public boolean onOptionsItemSelected(MenuItem item)
{
// Handle item selection
if (item.getItemId()==R.id.menuFinale)
{
ImageView imageView = (ImageView) findViewById(R.id.image_one);
imageView.setDrawingCacheEnabled(true);
Bitmap bitmap = imageView.getDrawingCache();
File root = Environment.getExternalStorageDirectory();
MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, "My pic" ,"Saved to gallery");
File file = new File(root.getAbsolutePath()+"/DCIM/Camera/img.jpg");
try
{
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.JPEG, 100, ostream);
ostream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
return true;
}
else {
return super.onOptionsItemSelected(item);
}
}
Try some thing as below : 尝试以下操作:
button=(Button)vi.findViewById(R.id.button_save);
button.setOnClickListener(new OnClickListener() {
private Bitmap bm;
private String PREFS_NAME;
public void onClick(View arg0) {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/saved_images");
if(!myDir.exists()){
myDir.mkdirs();}
bm = BitmapFactory.decodeResource( mContext.getResources(), images[itemPos]);
holder.image.setImageBitmap(bm);
SharedPreferences savedNumber = mContext.getSharedPreferences(PREFS_NAME, 0);
int lastSavedNumber = savedNumber.getInt("lastsavednumber",0);
lastSavedNumber++;
String fname = "Image-"+lastSavedNumber+".png";
File file = new File (myDir, fname);
if (file.exists ()) {file.delete (); }
try {
FileOutputStream out = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.PNG, 100, out);//Your Bitmap from the resouce
out.flush();
out.close(); }
catch (Exception e) {
e.printStackTrace();
}
SharedPreferences saveNumber = mContext.getApplicationContext().getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editorset = saveNumber.edit();
editorset.putInt("lastsavednumber",lastSavedNumber);
editorset.commit();
Toast.makeText(mContext, "saved", Toast.LENGTH_SHORT). show();}});
hope help you. 希望对你有帮助。
I managed finally to solve my issue instead of the imageView I'm referring to cache I must instead refer to ViewPager to cache all including the imageView instead here is my new code 我终于设法解决了我的问题,而不是要引用的imageView,我必须改为引用ViewPager来缓存所有包括imageView的内容,这是我的新代码
enter code here
public boolean onOptionsItemSelected(MenuItem item)
{
// Handle item selection
if (item.getItemId()==R.id.menuFinale)
{
pager.setDrawingCacheEnabled(true);
pager.buildDrawingCache(true);
pager.setDrawingCacheEnabled(true);
Bitmap b = pager.getDrawingCache(true);
File root = Environment.getExternalStorageDirectory();
MediaStore.Images.Media.insertImage(getContentResolver(), b, "My pic" ,"Saved to gallery");
File file = new File(root.getAbsolutePath()+"/DCIM/HD.jpg");
try
{
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
b.compress(CompressFormat.JPEG, 100, ostream);
ostream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
return true;
}
else
{
return super.onOptionsItemSelected(item);
}
} }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.