J'ai ce problème: quand je charge la photo que j'ai obtenir de la caméra ou la galerie, avec ce code:comment enregistrer la rotation correcte du Bitmap
if (resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_TAKE_PHOTO || requestCode == REQUEST_PICK_PHOTO)
//dalla fotocamera
{
if (data != null)mMediaUri = data.getData();
Glide.with(this).load(mMediaUri).bitmapTransform(new CenterCrop(context), new RoundCornerTransformation(context, 15, 2)).into(photo);
}
}
l'image est affichée dans la bonne façon dans l'imageView. Sinon, je dois compresser le bitmap, donc je l'ai fait ce code pour faire la compression:
fun compressBitmapInBackgroundtoByteArray(uri: Uri?,context: Context, callback: OnFinishedCallback) {
Observable.create<ByteArray> { s ->
var imageStream: InputStream? = null
try {
imageStream = context.getContentResolver().openInputStream(uri)
} catch (e: FileNotFoundException) {
s.onError(e)
}
val bmp = BitmapFactory.decodeStream(imageStream)
var stream: ByteArrayOutputStream? = ByteArrayOutputStream()
bmp.compress(Bitmap.CompressFormat.JPEG, 0, stream)
bmp.recycle()
val compressed:ByteArray? =(stream?.toByteArray())
try {
stream?.close()
} catch (e: IOException) {
s.onError(e)
}
s.onNext(compressed!!)
s.onComplete()
}.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribeBy (
onNext = { compress -> callback.onNext(compress) },
onError = { error-> callback.onError(error.message) },
onComplete = { callback.onCompleted() }
)
}
et ce détachez l'orientation correcte. En fait, lorsque je tente de charger le byteArray que j'ai donné, avec ce code:
if(user.getPicUrl() != null) {
Glide.with(this).load(user.getPicture()).bitmapTransform(new CenterCrop(context), new RoundCornerTransformation(context, 15, 2)).into(photo);
PICTURE_INSERTED = true;
}
l'image a la rotation de 90 degrés. J'ai lu que Glide prend en charge la rotation Exif, mais dans ce cas, cela ne fonctionne pas. Pourquoi? Il existe un moyen de "stocker" l'orientation correcte à enregistrer dans le serveur? Merci
nécessite API 24, mon min est 19/21 ... – ste9206
https://github.com/zetbaitsu/Compressor Peut-être que cette bibliothèque aide you.Its min sdk 14. –
Je suis regarde ExifInterface now.Its supporte même API 5.Probably votre importation est fausse.Mon importer comme ceci: import android.media.ExifInterface –