2014-05-21 53 views
0

好中午到所有我如何...店鋪形象從imagview到SD card.on點擊一個按鈕

我開發這將對圖像視圖圖像的應用程序。

我需要:

我需要的是當我按一下按鈕,那麼它應該存儲存在於圖像視圖到SD卡(模擬器)的圖像。

這是我如何使用:(但沒有預期的結果)

Button btnWriteSDFile = (Button) findViewById(R.id.btnWriteSDFile); 
btnWriteSDFile.setOnClickListener(new OnClickListener() { 
public void onClick(View v) { 

ImageView myImage = (ImageView) findViewById(R.id.imageView1); 
BitmapDrawable drawable = (BitmapDrawable) myImage.getDrawable(); 
Bitmap bitmap = drawable.getBitmap(); 
File sdCardDirectory = Environment.getExternalStorageDirectory(); 
File image = new File(sdCardDirectory, "image.png"); 
boolean success = false; 

// Encode the file as a PNG image. 
FileOutputStream outStream; 
try { 

outStream = new FileOutputStream(image); 
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream); 


outStream.flush(); 
outStream.close(); 
success = true; 
} catch (FileNotFoundException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
e.printStackTrace(); 
} 
if (success) { 
Toast.makeText(getApplicationContext(), "Image saved with success", 
Toast.LENGTH_LONG).show(); 
} else { 
Toast.makeText(getApplicationContext(), 
"Error during image saving", Toast.LENGTH_LONG).show(); 
} 
} 
}); 

在我上面的代碼我沒有得到任何錯誤

它只是顯示,「保存在MNT/SD /圖像文件.png「,但沒有找到圖像。

如果有人幫我把我從這個擺脫出來,這將是可觀的。

**

「找到了,其確切的問題」:我的計劃是完美 @ 1時運行,如果我按一下按鈕,並在畫廊檢查意味着沒有 形象,但一旦我關閉和打開模擬器然後有一個圖像。但 我需要儘快看到圖像更新如何做到這一點的任何想法?

**

在此先感謝。

回答

1

您的代碼看起來不錯,但爲了寫東西到外部存儲,你應該在清單中聲明如下權限:

android.permission.WRITE_EXTERNAL_STORAGE

+0

是的!!!!感謝您的快速反應。但我已經在清單中添加了該權限。 – Appdev

+1

如何檢查文件是否存儲在設備上?請首先檢查** adb shell **,因爲爲了強制文件出現在某些Android應用程序(如Gallery)中,您必須更新MediaStore。 –

+0

再次感謝提供良好的信息真的很好。我只在畫廊檢查。將更新媒體商店和檢查。如果它的工作,那麼我很高興你的幫助。 – Appdev

1

下面的代碼試圖利用截圖

private static Bitmap takeScreenShot() 
    { 
     Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap(); 
     return bitmap; 
    } 

爲了節省

private File saveBitmap(Bitmap bitmap) 
    { 
     File snapShot=null; 
     try 
     { 
      ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
       bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes); 
       File f = new File(Environment.getExternalStorageDirectory() 
           + File.separator + "test.jpg"); 
       f.createNewFile(); 
       FileOutputStream fo = new FileOutputStream(f); 
       fo.write(bytes.toByteArray()); 
       fo.close(); 
     } catch (Exception e) 
     { 
       e.printStackTrace(); 
     } 
     return snapShot; 
    } 

需要的,如果你使用一些東西一樣

ImageView myImage = (ImageView) findViewById(R.id.imageView1); 
myImage .setDrawingCacheEnabled(true); 
myImage .buildDrawingCache(); 
Bitmap bitmap = myImage .getDrawingCache(); 

File sdCardDirectory = Environment.getExternalStorageDirectory(); 
File image = new File(sdCardDirectory, "image.png"); 
boolean success = false; 

// Encode the file as a PNG image. 
FileOutputStream outStream; 
try { 

outStream = new FileOutputStream(image); 
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream); 


outStream.flush(); 
outStream.close(); 
success = true; 
} catch (FileNotFoundException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
e.printStackTrace(); 
} 
if (success) { 
Toast.makeText(getApplicationContext(), "Image saved with success", 
Toast.LENGTH_LONG).show(); 
} else { 
Toast.makeText(getApplicationContext(), 
"Error during image saving", Toast.LENGTH_LONG).show(); 
} 
} 
}); 

賦予權限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
+0

好的謝謝讓我試試你的方式....如果有道理讓你知道。 – Appdev

+0

嗨對不起,我是一名研究人員剛剛開始研究這種裝置後纔剛剛接觸Android ...我只是有一個疑問,那就是我在圖像視圖中有圖像,那麼爲什麼我要使用屏幕截圖..如果闕並不有道理 – Appdev

+0

看到我編輯的答案。 @ user3312615 – Andrain

1

,並請設置如下權限在AndroidManifest.xml

android.permission.WRITE_EXTERNAL_STORAGE

+0

此網站不用於合併某人的問題和答案。 – Andrain

+0

嗨,我已經做到了這一點。在Android.mainfest獲得許可,但仍然沒有得到圖像 – Appdev

+0

請看我的答案的最高代碼我已經改變了一些東西。 ImageView myImage =(ImageView)findViewById(R.id.imageView1); myImage .setDrawingCacheEnabled(true); myImage .buildDrawingCache(); 位圖位圖= myImage .getDrawingCache(); –