2014-02-21 5 views
0

Друзья, я работаю с steganography для изображений в android прямо сейчас. Для этого мне нужно преобразовать изображение в массив бит и декодировать его обратно. Но когда я пытаюсь преобразовать свое изображение обратно в его исходную форму, он показывает только черный цвет в моем ImageView. вот мой кодМое изображение черное в андроиде

btnEncode = (кнопка) findViewById (R.id.encode); btnEncode.setOnClickListener (новый View.OnClickListener() {

 @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      //imgPath.setText(imageToBase64(selectedImagePath)); 
      ImageView imageView=(ImageView)findViewById(R.id.imageView1); 
      BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable(); 
      Bitmap bitmap = drawable.getBitmap(); 

       bytes = getBytesFromBitmap(bitmap); 
       StringBuilder binary = new StringBuilder(); 
       for (byte b : bytes) 
       { 
       int val = b; 
       for (int i = 0; i < 8; i++) 
       { 
        binary.append((val & 128) == 0 ? 0 : 1); 
        val <<= 1; 
       } 
       binary.append(' '); 
       } 

       //To save the binary in newString 

      String ImageEncoded=new String(binary.toString()); 
      TextView imgData=(TextView)findViewById(R.id.txtResult); 
      imgData.setText(ImageEncoded); 
     } 
    }); 
    btnDecode = (Button) findViewById(R.id.decode); 
    btnDecode.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) 
     { 
      // TODO Auto-generated method stub 
      ImageView imageView=(ImageView)findViewById(R.id.imageView1); 
      BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable(); 
      Bitmap bitmap = drawable.getBitmap(); 

       bytes = getBytesFromBitmap(bitmap); 

      Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); 
      ImageView image = (ImageView) findViewById(R.id.imageView2); 

      image.setImageBitmap(bmp); 
     } 
    }); 

public static byte[] getBytesFromBitmap(Bitmap bitmap) 
{ 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bitmap.compress(CompressFormat.JPEG, 70, stream); 
    return stream.toByteArray(); 
} 
+0

почему этот требуется преобразование? – Triode

+1

возможно, что у вас есть CompressFormat.JPEG, который превратит вашу прозрачность в черное использование PNG вместо – JRowan

+0

Требуется конверсия, чтобы я мог скрывать секретное сообщение на изображении. Как вы думаете, я могу использовать любой другой способ сделайте это? – Abinthaha

ответ

1

Сво о вашем формате преобразователя. Используйте CompressFormat.PNG вместо CompressFormat.JPEG. Это вызвано "JPEGs не делать прозрачность, как PNG".

+0

О, извините за это, я не получаю вывод, как ожидалось. Теперь изображение не будет черным, но не получит никакого изображения или ничего, Пожалуйста, помогите мне в этом. Есть ли ошибка в моем коде? Я просто хочу преобразовать изображение в его значения пиксельных значений – Abinthaha

+0

С этим изменением я получаю точно такой же образ «R.id.imageView1» с оцененным изображением на «R.id.imageView2». –

+0

Не понимаю, что это ... – Abinthaha

Смежные вопросы