2016-04-08 5 views
7

यह एक डुप्लिकेट हो सकता है लेकिन मुझे Http Post के लिए भेजने के लिए छवि को Base64 में बदलने के लिए कुछ समस्या का सामना करना पड़ रहा है। मैंने इस कोड को आजमाया है लेकिन उसने मुझे गलत एन्कोडेड स्ट्रिंग दी है।जावा में किसी छवि को बेस 64 स्ट्रिंग में कैसे परिवर्तित करें?

public static void main(String[] args) { 

      File f = new File("C:/Users/SETU BASAK/Desktop/a.jpg"); 
      String encodstring = encodeFileToBase64Binary(f); 
      System.out.println(encodstring); 
     } 

     private static String encodeFileToBase64Binary(File file){ 
      String encodedfile = null; 
      try { 
       FileInputStream fileInputStreamReader = new FileInputStream(file); 
       byte[] bytes = new byte[(int)file.length()]; 
       fileInputStreamReader.read(bytes); 
       encodedfile = Base64.encodeBase64(bytes).toString(); 
      } catch (FileNotFoundException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      return encodedfile; 
     } 

आउटपुट: [बी @ 677327b6

लेकिन मैं कई ऑनलाइन एनकोडर में Base64 में इस एक ही छवि परिवर्तित और वे सब सही बड़ा Base64 स्ट्रिंग दे दी है।

संपादित करें: यह एक डुप्लिकेट कैसा है ?? जो लिंक मेरा डुप्लिकेट है, वह मुझे जो स्ट्रिंग बदलना चाहता है उसे बदलने का समाधान नहीं देता है।

मुझे यहां क्या याद आ रही है ??

+0

आप कैसे निर्धारित करने कर रहे हैं कि यह गलत आधार 64 स्ट्रिंग हो सकता है? –

+0

ऑनलाइन एन्कोडर्स के रूप में बेस 64 –

+0

के बड़े तार लौट रहे हैं क्या आप POST विधि के लिए कोड प्रदान कर सकते हैं? मैं एक ही समस्या में हूं (एक छवि पोस्ट करें ...) धन्यवाद !! – Yekatandilburg

उत्तर

15

समस्या यह है कि आप Base64.encodeBase64(bytes) जो एक बाइट सरणी देता है करने के लिए कॉल की toString() लौट रहे है। तो अंत में आप जो प्राप्त करते हैं वह बाइट सरणी का डिफ़ॉल्ट स्ट्रिंग प्रस्तुति है, जो आपको प्राप्त होने वाले आउटपुट से मेल खाता है।

इसके बजाय, आप क्या करना चाहिए:

encodedfile = new String(Base64.encodeBase64(bytes), "UTF-8"); 
+0

जिसने मेरी समस्या हल की –

+2

स्ट्रिंग strBase64 = Base64.encodeToString (बाइटएरे, 0) –

0

यह मेरे लिए यह किया। आप आउटपुट प्रारूप के लिए बेस 64 पर विकल्पों को बदल सकते हैं। डीफॉल्ट जो भी हो।

// encode base64 from image 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
imageBitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); 
byte[] b = baos.toByteArray(); 
encodedString = Base64.encodeToString(b, Base64.URL_SAFE | Base64.NO_WRAP); 
+0

जहां मेरी छवि फ़ाइल को खिलाना है ?? –

+0

यहां, यह छवि बिटमैप में लोड किया गया है। विधि। कॉम्प्रेट कनवर्ट करता है और इसे बाओस – MojioMS

+0

बेस 64.URL_SAFE में एन्कोड करता है ये मेरे लिए काम नहीं कर रहे हैं ?? आयात करने के लिए क्या है ?? –

4

मुझे लगता है कि आप देख सकते हैं:

String encodedFile = Base64.getEncoder().encodeToString(bytes); 
+0

आयात org.apache.commons.codec.binary.Base64; मैं इसे आयात कर रहा हूं .. यहां बेस 64 को एन्कोडर() चीजें पसंद नहीं हैं –

+0

@setubasak यह जावा में जोड़ा गया 'java.util.Base64' है। – Pshemo

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