6

मैं अपने बिटमैप को कैश निर्देशिका में सहेजना चाहता हूं।मैं दूसरी बार अपने बिटमैप को सही तरीके से कैसे सहेज सकता हूं?

try { 
     File file_d = new File(dir+"screenshot.jpg"); 
     @SuppressWarnings("unused") 
     boolean deleted = file_d.delete(); 
    } catch (Exception e) { 
     // TODO: handle exception 
    } 

    imagePath = new File(dir+"screenshot.jpg"); 
    FileOutputStream fos; 
    try { 
     fos = new FileOutputStream(imagePath); 
     bitmap.compress(CompressFormat.JPEG, 100, fos); 
     fos.flush(); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
     Log.e("GREC", e.getMessage(), e); 
    } catch (IOException e) { 
     Log.e("GREC", e.getMessage(), e); 
    } 
} 

यह ठीक काम कर रहा है: मैं इस कोड का उपयोग करें। लेकिन अगर मैं एक ही रास्ते पर अलग आईएमजी को सहेजना चाहता हूं, तो कुछ गलत हो जाता है। मेरा मतलब है कि यह एक ही पथ में सहेजा गया है लेकिन मुझे पुरानी छवि दिखाई देती है, लेकिन जब मैं छवि पर क्लिक करता हूं तो मैं सही छवि देख सकता हूं जिसे मैंने दूसरी बार सहेजा था।

शायद यह कैश से आता है लेकिन मैं पुरानी छवि नहीं देखना चाहता क्योंकि जब मैं उस छवि को व्हाट्सएप पुरानी छवि के साथ साझा करना चाहता हूं, तो अगर मैं छवि भेजता हूं तो यह सही लगता है।

मैं इस कोड की तरह whatsapp पर सहेजी गई छवि को साझा करना चाहते हैं:

Intent shareIntent = new Intent(); 
shareIntent.setAction(Intent.ACTION_SEND); 
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(imagePath)); 
shareIntent.setType("image/jpeg"); 
startActivityForResult(Intent.createChooser(shareIntent, getResources().getText(R.string.title_share)),whtsapp_result); 

मैं इसे कैसे ठीक कर सकते हैं?

अग्रिम धन्यवाद।

+0

बेस्ट अभ्यास है। –

+0

मैं पिछली छवि को हटाता हूं जैसा कि आप मेरे कोड में देख सकते हैं, यह काम नहीं कर रहा है? –

+0

'हटाए गए' मान की जांच करें। अगर छवि हटा दी गई है तो यह कभी वापस नहीं आएगी। –

उत्तर

3

अंत में मैं इस तरह मेरी समस्या हल:

Intent shareIntent = new Intent(); 
shareIntent.setAction(Intent.ACTION_SEND); 
shareIntent.putExtra(Intent.EXTRA_STREAM, getImageUri(context,bitmap_)); 
shareIntent.setType("image/jpeg"); 
startActivityForResult(Intent.createChooser(shareIntent, getResources().getText(R.string.title_share)),whtsapp_result); 

v जब आप एक नई छवि पहले निर्देशिका से पिछले छवि (इसी नाम छवि) स्पष्ट बचाने

public Uri getImageUri(Context inContext, Bitmap inImage) { 
      ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
      inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
      String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "TitleC1", null); 
      return Uri.parse(path); 
     } 
0

यह सिर्फ एक अनुमान है, लेकिन चूंकि आप एक नई छवि (पुराने नाम, या किसी अन्य के साथ प्रासंगिक नहीं हैं) को सहेजते हैं, तो आपको उस पथ पर मीडिया स्कैन करना चाहिए ताकि मीडिया प्रदाता को नई सामग्री के साथ अपडेट किया जा सके।

here देखें:

MediaScannerConnection.scanFile(context, new String[]{imagePath}, null, null); 

या और भी बेहतर, स्कैन पूरा हो जाने की लिए प्रतीक्षा:

MediaScannerConnection.scanFile(context, new String[]{imagePath}, null, new OnScanCompletedListener() { 
    @Override 
    void onScanCompleted(String path, Uri uri) { 
     // Send your intent now. 
    } 
}); 

किसी भी मामले में यह के बाद नई फ़ाइल सहेजा जाता है बुलाया जाना चाहिए। जैसा कि मैंने कहा, मैंने परीक्षण नहीं किया है और यह सिर्फ एक यादृच्छिक अनुमान है।

+0

में इसका उपयोग कैसे कर सकता है, यह काम नहीं कर रहा है :( –

+0

इसके बारे में क्षमा करें :-) – natario

+0

मैं थंबनेल कैसे हटा सकता हूं –

संबंधित मुद्दे