Я сделал свое собственное приложение для камеры на Android.андроид байт [] изменение данных
1) Настройка камеры и предварительного просмотра:
Camera.Parameters parameters = camera.getParameters();
// My camera takes landscape picture by befault (Samsung GT-9300).
// But my app is only in portrait mode.
camera.setDisplayOrientation(90);
// Here to rotate final pict
parameters.set("rotation", 90);
// Some code to define best preview resolution and best picture resolution
... some code ...
// Apply
camera.setParameters(parameters);
2) StartPreview
// Here I see what i want to see... Is there no problem here.
camera.startPreview();
3) GetOutputMediaFile()
// private function to create empty file which will receive data
private static File getOutputMediaFile(){
String NewFolder = "/TEST";
String StorageDirectory;
StorageDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString();
File mediaStorageDir = new File(StorageDirectory + NewFolder);
if (!mediaStorageDir.exists()){
if (!mediaStorageDir.mkdirs()){
Log.d("myApp", "failed to create directory");
return null;
} else {
mediaStorageDir.mkdir();
}
}
String date = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss", Locale.FRANCE).format(new Date());
File photo = new File(StorageDirectory + NewFolder, "photo_" + date + ".jpg");
return photo;
}
4) Здесь моя проблема
// camera.takePicture(null, null, mPicture) called on onCreate function
// Here this callback
private PictureCallback mPicture = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
pictureFile = getOutputMediaFile();
if (pictureFile == null){
Log.d(TAG, "Error creating media file, check storage permissions: " + e.getMessage());
return;
}
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
} catch (FileNotFoundException e) {
Log.d(TAG, "File not found: " + e.getMessage());
} catch (IOException e) {
Log.d(TAG, "Error accessing file: " + e.getMessage());
}
};
На моем телефоне, если я иду в свою галерею или оригинальное приложение для файлов, у меня есть эскиз и фотография правильно ориентированы.
Теперь, если я поеду с корневым файловым менеджером в этой папке с картинками, миниатюра ориентирована по умолчанию (реальная ориентация камеры) и так же, как если бы я смотрел картинку с моего компьютера.
Тогда я думаю, что мои данные var (byte [] data) на моей функции onPictureTaken не очень хорошие. Я думаю, что данные таково:
Но я хотел бы иметь, что в моем варе данных:
Я знаю, что мои данные вары только байты [], но эти cat pictures - это показать, как я вижу свои данные var.
Теперь мои вопросы:
А) У меня прямо о том, как мои переменных данных?
B) Если да, можете ли вы сказать мне, как сделать поворот на 90 ° на этом «массиве»?
Я искал атрибут Exif как getAttribute («TAG_ORIENTATION»), он возвращает значение null, что означает, что в файле JPEG нет такого тега. Затем я попытался установить атрибут атрибута («TAG_ORIENTATION», «6»), 6 = ORIENTATION_ROTATE_90, затем сохранить атрибуты () в конце onPictureTaken(). Но у меня такой же результат. Любая идея почему? – locobastos