Mam obraz, który jest przechowywany jako tablica bajtów [], i chcę odwrócić obraz w pionie przed zapisaniem bajtów na dysk gdzie indziej.Odwróć obraz przechowywany jako tablica bajtowa
Bajty obrazu pochodzą ze skompresowanego pliku obrazu jp2. Sprawdziłem implementację czegoś takiego jak Flip image stored as a byte[] array, ale nie pracuję na Androidzie i nie mam dostępu do BitmapFactory. Przyjrzałem się także przekształceniu tablicy bajtów w obraz BufferedImage, a następnie w odwróceniu, ale wysokość i szerokość obrazu nie jest znana w bieżącym kontekście (EDIT: Zmodyfikowałem kod tak, aby wysokość i szerokość były teraz znany).
Czy jest jakiś sposób na zrobienie tego tylko przy ścisłej manipulacji tablicą?
EDIT: Próba kod klapki
public static byte[] flip(byte[] imageBytes) {
//separate out the sub arrays
byte[] holder = new byte[imageBytes.length];
byte[] subArray = new byte[dimWidth];//dimWidth is the image width, or number of matrix columns
int subCount = 0;
for (int i = 0; i < imageBytes.length; i++) {
subArray[subCount] = imageBytes[i];
subCount++;
if (i% dimWidth == 0) {
subArray = reverse(subArray);
if (i == (dimWidth)) {
holder = subArray;
} else {
holder = concat(holder, subArray);
}
subCount = 0;
subArray = new byte[dimWidth];
}
}
subArray = new byte[dimWidth];
System.arraycopy(imageBytes, imageBytes.length - dimWidth, subArray, 0, subArray.length);
holder = concat(holder, subArray);
imageBytes = holder;
return imageBytes;
}
A więc, co wiadomo? –
@HovercraftFullOfEels mówiąc ściśle, mam wysokie bajty i małe bajty w ich własnych tablicach przed ich przeplataniem. Prawie wszystko, co wiadomo, to tablica danych pikseli i tablica danych zawierająca pierwotne informacje wstępnej kompresji. – Sarah
"ale wysokość i szerokość obrazu nie jest znana" To sprawia, że nie wiadomo, gdzie zamieniać piksele (chyba że wysokość i szerokość są liczbą pierwszą, a wiesz, która jest większa). –