Bitmap compresser PNG -> format JPEG et vice-versa dans Android
J'ai un problème avec la taille de l'image quand je suis en train de faire la conversion PNG en JPEG, puis JPEG en PNG.
public void onClick(View v) {
String imageFileName = "/sdcard/Penguins2.png";
File imageFile = new File(imageFileName);
if (imageFile.exists()) {
//Load the image from file
myBitmap = BitmapFactory.decodeFile(imageFileName);
//Display the image in the image viewer
myImageView = (ImageView) findViewById(R.id.my_image_view);
if (myImageView != null) {
myImageView.setImageBitmap(myBitmap);
}
}
}
De Conversion:
private void processImage() {
try {
String outputPath = "/sdcard/Penguins2.jpg";
int quality = 100;
FileOutputStream fileOutStr = new FileOutputStream(outputPath);
BufferedOutputStream bufOutStr = new BufferedOutputStream(
fileOutStr);
myBitmap.compress(CompressFormat.JPEG, quality, bufOutStr);
bufOutStr.flush();
bufOutStr.close();
} catch (FileNotFoundException exception) {
Log.e("debug_log", exception.toString());
} catch (IOException exception) {
Log.e("debug_log", exception.toString());
}
myImageView.setImageBitmap(myBitmap);
Après le traitement de cette opération, j'ai juste changer ces lignes:
String imageFileName = "/sdcard/Penguins2.png";
à
String imageFileName = "/sdcard/Penguins2.jpg";
et
String outputPath = "/sdcard/Penguins2.jpg";
(...)
myBitmap.compress(CompressFormat.JPEG, quality, bufOutStr);
à
String outputPath = "/sdcard/Penguins2.png";
(...)
myBitmap.compress(CompressFormat.PNG, quality, bufOutStr);
Taille de l'image a changé à partir de 585847 à 531409 (DDMS)
Je veux faire telle chose parce que je tiens à utiliser le format PNG qui est sans perte pour certains de traitement de l'image.
Ensuite, converse image au format jpeg et d'envoyer des MMS, je ne suis pas sûr mais je pense que le JPEG est le format qui est le soutien par tous les appareils de MMS. Récepteur serait ouvrir une image et de converser en arrière en png sans perte de données.
OriginalL'auteur Marcin_cyna | 2013-01-30
Vous devez vous connecter pour publier un commentaire.
En plus de l' @Sherif elKhatib réponse, si vous consultez la documentation: http://developer.android.com/reference/android/graphics/Bitmap.html#compress%28android.graphics.Bitmap.CompressFormat,%20int,%20java.io.OutputStream%29
Vous pouvez voir que les images PNG ne pas utiliser la qualité paremeter:
OriginalL'auteur Miloš
Ce n'est pas faisable! Une fois que vous convertir au format JPG que vous avez perdu le "sans perte de l'état de PNG".
De toute façon png est pris en charge par tout le monde.
+Dans votre cas, vous voulez que le récepteur de le modifier pour le format PNG pour récupérer l'image sans perte. Cela signifie que le récepteur prend également en charge le format PNG. Quel est le point de changer pour JPG avant de l'envoyer, puis changer de nouveau à PNG lors de la réception. Juste quelques calculs supplémentaires?
La réponse est: une Fois que vous convertir au format JPG que vous avez perdu le "sans perte de l'état de PNG".. Donc, il n'a vraiment pas d'importance si elle est prise en charge par l'appareil. Je ne suis pas au courant si le format PNG est pris en charge dans MMS.
OriginalL'auteur Sherif elKhatib