Próbuję obrócić obraz bitmapy o 90 stopni, aby zmienić go z formatu poziomego na format pionowy. Przykład:Obrót mapy bitowej o 90 stopni w Androidzie powoduje zmiażdżenie obrazu. Potrzebujesz prawdziwego obrotu między portretem a krajobrazem
[a, b, c, d]
[e, f, g, h]
[i, j, k, l]
obrócony o 90 stopni w prawo zostaje
[b, e, a]
[j, k, b]
[a, g, C]
[l H, d]
za pomocą kodu poniżej (z przykładu line) obrazu jest obrócony o 90 stopni, ale zachowuje t ma współczynnik kształtu obrazu, więc kończy się pionowo zgniecionym obrazem. czy robię coś źle? Czy jest inna metoda, której potrzebuję użyć? Jestem również skłonny obrócić plik jpeg, którego używam do tworzenia mapy bitowej, o ile jest to łatwiejsze.
// create a matrix for the manipulation
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
// rotate the Bitmap
matrix.postRotate(90);
// recreate the new Bitmap
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOriginal, 0, 0, widthOriginal, heightOriginal, matrix, true);
Nie jestem pewien, czy dobrze rozumiem Twoje pytanie. Czy chcesz obrócić układ ekranu po zmianie orientacji? A może chcesz zmienić layouyt ekranu, mimo że orientacja się nie zmienia? (Android automatycznie obraca elementy ekranu, gdy orientacja się zmienia!) – Ahmed
Dlatego chcę zmienić same dane bitmapowe. W mojej aplikacji kamera zapisuje obraz nieprawidłowo, tak że nawet jeśli zdjęcie zostanie zrobione w orientacji "portretowej", nadal ładuje je w orientacji "krajobrazowej". Jestem w stanie wykryć prawdziwą orientację poprzez dane EXIF pliku i chcę obrócić mapę bitową do właściwej orientacji. Nie chcę po prostu zmieniać sposobu wyświetlania bitmapy, ale zmieniać rzeczywiste dane, aby po zmodyfikowaniu obrazu mogła być poprawnie zapisana. – user999764