Android SurfaceView与保存的图像不同

时间:2012-10-03 16:21:24

标签: android android-camera surfaceview

我正在创建一个自定义相机,在完成之前我还有2个错误需要修复。我在这里寻求其中一个的帮助。

我正在尝试创建一个正方形预览(SurfaceView)并将该正方形保存到文件中。我能够实现这一目标的唯一方法是使用自定义视图,如下所示:

public class SquareSurfaceView extends SurfaceView {

    private int width;
    private int height;

    public SquareSurfaceView(Context context) {
        super(context);
    }

    public SquareSurfaceView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SquareSurfaceView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        width = MeasureSpec.getSize(widthMeasureSpec);
        setMeasuredDimension(width, width);
    }

    public int getViewWidth() {
        return width;
    }

    public int getViewHeight() {
        return height;
    }
}

我遇到的问题是预览图像和保存的图像有点偏。保存的图像从图像的顶部显示更多..所以,让我说我拍摄一张门的照片,然后将预览的顶部与门的顶部对齐,拍摄照片,保存的图像,显示我将等同于大约30dp的更多图像,显示预览未显示的门上方的内容。

我用于裁剪图像的代码如下:

SimpleDateFormat sdf = new SimpleDateFormat(
        "yyyyMMdd_HHmmss", Locale.US);
mLastPhotoFilename = "IMG_" + sdf.format(new Date())
        + ".jpg";

// cropped file
File photoFile = new File(photoStoragePath,
        mLastPhotoFilename);

// gallery file
File galleryFile = new File(galleryStoragePath,
        mLastPhotoFilename);

// write the cropped file
mLastPhoto
        .compress(
                CompressFormat.JPEG,
                95,
                new FileOutputStream(galleryFile
                        .getAbsolutePath()));

// resize the bitmap
Bitmap scaledPhoto = Bitmap.createBitmap(mLastPhoto, 0, 0,
        mLastPhoto.getWidth(), mLastPhoto.getWidth());

// write the cropped file
scaledPhoto.compress(CompressFormat.JPEG, 95,
        new FileOutputStream(photoFile.getAbsolutePath()));

我将完整图片保存到手机图库,调整图片大小,并将调整后的内容存储到我的应用目录。

那么,为什么我的预览没有显示相机看到的内容并且正在保存?如何才能获得预览的顶部,成为相机顶部的样子?

0 个答案:

没有答案