2016-04-28 35 views
0

Ich lese gerade ein Bild aus der Galerie im Bitmap-Format. Beim Speichern in der Datenbank muss ich es in Byte umwandeln, während ich es in der Image Adapter-Klasse in Bitmap konvertieren muss. Konvertieren von Bitmap in Byte und umgekehrt

Im folgenden ist der Code: - bis Byte, um die Umwandlung zu speichern in Datenbank

public void submitAction(View view) 
    { 
     /*This method creates a new post and populates it with the data added by the user. The data is then stored in the database 
     * using the Active Android Library.*/ 
     Post p = new Post(); 
     EditText title = (EditText) findViewById(R.id.post_title_input); 
     String tit = title.getText().toString(); 
     EditText description = (EditText)findViewById((R.id.editText)); 
     String desc = description.getText().toString(); 
     Bitmap img = yourSelectedImage; 
     p.title=tit; 
     p.description=desc; 
     p.section="science"; 
     int bytes = img.getByteCount(); 
     ByteBuffer buffer = ByteBuffer.allocate(bytes); //Create a new buffer 
     img.copyPixelsToBuffer(buffer); 
     byte[] array = buffer.array(); 

    } 

-Code in imageAdapter Klasse - konvertiert die byte []

public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView; 
     if (convertView == null) { 
      // if it's not recycled, initialize some attributes 
      imageView = new ImageView(mContext); 
      imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      imageView.setPadding(8, 8, 8, 8); 
     } else { 
      imageView = (ImageView) convertView; 
     } 

     /*Converting image to byte*/ 
     Post p = posts.get(position); 
     byte[] image = p.image; 
     ByteArrayInputStream imageStream = new ByteArrayInputStream(image); 
     Bitmap theImage = BitmapFactory.decodeStream(imageStream); 
     imageView.setImageBitmap(theImage); 
     return imageView; 
    } 

in Bitmap Wenn das runnning Anwendung, stürzt es bei Zeile Bitmap theImage = BitmapFactory.decodeStream(imageStream); ab und endet mit einer Nullzeigerausnahme.

Antwort

1

Bitmap to byte []

Bitmap bitmap = ...; 
ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); 
byte[] byteArray = stream.toByteArray(); 

byte [] in Bitmap

Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray , 0, byteArray.length); 
Verwandte Themen