D
DrLiightninG
Neues Mitglied
- 1
Hallo zusammen,
ich habe in meiner App ein Bitmap, welches ecodiert wird, um es auf meinen Webspace zu laden.
Später soll es beim Runterladen wieder decodiert werden. Im Grunde funktioniert das alles.
Allerdings ist das Bitmap nach dem Decodieren kleiner als vorher. Das heißt es wurden etwa zwei Drittel des Bildes abgeschnitten.
Woran kann das liegen?
Hier mein Code:
Encodieren des Bitmaps zu einem String:
Decodieren des Strings zu einem Bitmap:
So wurde ein Drawable zur Bitmap umgewandelt:
(Für Breite und Höhe wurden folgende Werte genommen:
drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight() )
So sieht es nach dem Decodieren aus (Es fehlt der untere Teil des Bildes):
Gruß
Jan
PS: Problem behoben! Das Problem lag nicht an meinem Code, sondern an meiner MySQL Datenbank, wo der String der Bitmap gespeichert wurde. Dort hatte ich als Typ "Blob" angegeben. Als ich dies nun in "Longblob" geändert habe, wird das komplette Bild gespeichert und geladen.
ich habe in meiner App ein Bitmap, welches ecodiert wird, um es auf meinen Webspace zu laden.
Später soll es beim Runterladen wieder decodiert werden. Im Grunde funktioniert das alles.
Allerdings ist das Bitmap nach dem Decodieren kleiner als vorher. Das heißt es wurden etwa zwei Drittel des Bildes abgeschnitten.
Woran kann das liegen?
Hier mein Code:
Encodieren des Bitmaps zu einem String:
Code:
public String getStringImage(Bitmap bmp){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
return encodedImage;
}
Decodieren des Strings zu einem Bitmap:
Code:
public Bitmap getPicBitmap(String image) {
try{
byte [] encodeByte=Base64.decode(image, Base64.DEFAULT);
Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
return bitmap;
}catch(Exception e){
e.getMessage();
return null;
}
}
So wurde ein Drawable zur Bitmap umgewandelt:
(Für Breite und Höhe wurden folgende Werte genommen:
drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight() )
Code:
public Bitmap convertToBitmap(Drawable drawable, int widthPixels, int heightPixels) {
Bitmap mutableBitmap = Bitmap.createBitmap(widthPixels, heightPixels, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(mutableBitmap);
drawable.setBounds(0, 0, widthPixels, heightPixels);
drawable.draw(canvas);
return mutableBitmap;
}
So sieht es nach dem Decodieren aus (Es fehlt der untere Teil des Bildes):
Gruß
Jan
PS: Problem behoben! Das Problem lag nicht an meinem Code, sondern an meiner MySQL Datenbank, wo der String der Bitmap gespeichert wurde. Dort hatte ich als Typ "Blob" angegeben. Als ich dies nun in "Longblob" geändert habe, wird das komplette Bild gespeichert und geladen.
Zuletzt bearbeitet: