मैंने इस (नीचे) कोड का उपयोग करके एसडी कार्ड पर एक तस्वीर से बेस 64 स्ट्रिंग बनाई है, और यह काम करता है लेकिन जब मैं इसे डीकोड करने की कोशिश करता हूं (यहां तक कि नीचे भी) मुझे java.lang.outOfMemoryException
मिलता है, संभवतः क्योंकि मैं मैं इसे डीकोड करने से पहले स्ट्रिंग को एक उचित आकार में विभाजित नहीं कर रहा हूं क्योंकि मैं इसे एन्कोड करने से पहले हूं।डीकोड बड़े बेस 64 स्ट्रिंग
byte fileContent[] = new byte[3000];
StringBuilder b = new StringBuilder();
try{
FileInputStream fin = new FileInputStream(sel);
while(fin.read(fileContent) >= 0) {
b.append(Base64.encodeToString(fileContent, Base64.DEFAULT));
}
}catch(IOException e){
}
उपरोक्त कोड अच्छी तरह से काम करता है, लेकिन समस्या तब आती है जब मैं निम्न कोड के साथ छवि को डीकोड करने का प्रयास करता हूं;
byte[] imageAsBytes = Base64.decode(img.getBytes(), Base64.DEFAULT);
ImageView image = (ImageView)this.findViewById(R.id.ImageView);
image.setImageBitmap(
BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)
);
मैं इस तरह की कोशिश की है भी
byte[] b = Base64.decode(img, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length);
image.setImageBitmap(bitmap);
अब मुझे लगता है कि मैं मेरी छवि एन्कोडिंग कोड की तरह वर्गों में स्ट्रिंग विभाजित करने की आवश्यकता है, लेकिन मैं कोई सुराग नहीं कैसे यह करने के बारे में जाना है ।
यह एक शानदार समाधान है! यह पूरी तरह से काम करता है – jcw