Android: Base64 Пример выпуска - PullRequest
       14

Android: Base64 Пример выпуска

0 голосов
/ 17 августа 2011

В настоящее время я использую kSoap для публикации данных в веб-сервисах C #.Теперь я подошел к той части, где мне нужно загружать изображения со своего компьютера с помощью Base64Binary.Я искал каждый интернет, но не мог найти правильное решение.

есть решение на примере внешнего класса Base64 , но меня интересует нативное решение, поскольку есть API для Android 2.2.

Так как я новичок, я не мог сделать это сам.По сути, у меня есть путь к файлам на SD-карте, и я хочу преобразовать их в формат Base64 для загрузки.

Надеюсь, кто-нибудь может мне помочь или направить меня к нужным документам.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 18 августа 2011

Я разобрался с вопросом

String Image64 = null;


        try {
            Image64 = Base64.encodeToString((getBytesFromFile(new File(path))), DEFAULT);

        } catch (IOException e) {
            e.printStackTrace();

        }

//encording
    public static byte[] getBytesFromFile(File file) throws IOException {
        InputStream is = new FileInputStream(file);

        // Get the size of the file
        long length = file.length();

        // You cannot create an array using a long type.
        // It needs to be an int type.
        // Before converting to an int type, check
        // to ensure that file is not larger than Integer.MAX_VALUE.
        if (length > Integer.MAX_VALUE) {
            // File is too large
        }

        // Create the byte array to hold the data
        byte[] bytes = new byte[(int)length];

        // Read in the bytes
        int offset = 0;
        int numRead = 0;
        while (offset < bytes.length
               && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
            offset += numRead;
        }

        // Ensure all the bytes have been read in
        if (offset < bytes.length) {
            throw new IOException("Could not completely read file "+file.getName());
        }

        // Close the input stream and return bytes
        is.close();
        return bytes;
    }
0 голосов
/ 17 августа 2011

Пожалуйста, попробуйте это, используйте Base64.java по указанной вами ссылке.

Bitmap bmImage = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + File.separator +  "Your filename");
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
bmImage.compress(Bitmap.CompressFormat.JPEG, 100, baos);   
String encodedString = Base64.encodeBytes( baos.toByteArray() );

Вы должны изменить расширение этого оператора Bitmap.CompressFormat.JPEG в соответствии с вашим типом файла. Вы можете декодировать строку base 64 в изображение, используя следующий код

byte[] b;
b = Base64.decode("base 64 string");
final Bitmap unscaledBitmap = BitmapFactory.decodeByteArray(b, 0, b.length );  
...