#android #bitmap
#Android #растровое изображение
Вопрос:
У меня есть приложение, которое делает снимки элементов, и эти элементы должны быть доступны для просмотра в определенной фиксированной области на ActivityScreen. Проблема в том, что изображение, отображаемое в activity из сохраненного растрового изображения, не похоже на то, что я предварительно просмотрел и сфотографировал. Оно выглядит увеличенным и показывает области, которые я даже не видел в предварительном просмотре, когда делал снимок: Вот ключевые строки кода
ЗАХВАТ ИЗОБРАЖЕНИЯ:
surfHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
captImageView = (ImageView)findViewById(R.id.CamImageView);
byte [] photoData;
Camera cam;
SurfaceHolder surfHolder;
SurfaceView surfView;
Camera.PictureCallback cback;
cback = new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
final int length = data.length;
opts.inSampleSize = 4;
final BitmapFactory.Options opts = new BitmapFactory.Options();
Bitmap bMap = null;
try {
bMap = BitmapFactory.decodeByteArray(data, 0, length, opts);
} catch(Exception e) {
}catch(OutOfMemoryError e) {
}
captImageView.setImageBitmap(bitmap);
if(bMap==null) {
cam.startPreview();
} else {
savePhotoButton.setVisibility(ImageView.VISIBLE);
takePhotoButton.setVisibility(ImageView.INVISIBLE);
photoData = data;
}
}
}
СОХРАНЕНИЕ ИЗОБРАЖЕНИЯ:
captImageView.setImageBitmap(null);
// SAVE THE PICTURE THIS SAVES PICTURE IN WRONG SIZE. LOOKS LIKED ZOOMED IN NOT WHAT WAS PREVIEWED!!!
public void photoSave(byte[] data) {
final int length = data.length;
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
try {
Bitmap bMap = BitmapFactory.decodeByteArray(data, 0, length, options);
int quality = 75;
File file = new File(getDir(), fname);
fileOutputStream = new FileOutputStream(file);
bMap.compress(CompressFormat.JPEG, quality, fileOutputStream);
}catch(FileNotFoundException e) {
} catch(OutOfMemoryError e) {} }
ОТОБРАЖЕНИЕ ИЗОБРАЖЕНИЯ как ОТОБРАЖАЕМОГО в ACTIVITY
НЕ РАБОТАЕТ, ПОКАЗЫВАЕТ ИЗОБРАЖЕНИЕ КАК УВЕЛИЧЕННОЕ Или ЧАСТИ, КОТОРЫЕ ВООБЩЕ НЕ ВИДНЫ в ПРЕДВАРИТЕЛЬНОМ ПРОСМОТРЕ, КОГДА БЫЛ СДЕЛАН снимок!!
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = inSampSize;
Bitmap bitmap = BitmapFactory.decodeFile(path, options);
Drawable drawable = bitmap;
ImageView pictureView = (ImageView)findViewById(R.id.pictureViewer);
pictureView.setImageDrawable(drawable);
Комментарии:
1. Мне интересно, проблема в том, что мне нужно использовать только высоту / ширину, которые поддерживаются камерой? Может ли это быть проблемой? Спасибо