diff --git a/app/src/main/java/com/xypower/mppreview/Camera2RawFragment.java b/app/src/main/java/com/xypower/mppreview/Camera2RawFragment.java index 238666c..d59f39f 100644 --- a/app/src/main/java/com/xypower/mppreview/Camera2RawFragment.java +++ b/app/src/main/java/com/xypower/mppreview/Camera2RawFragment.java @@ -655,6 +655,7 @@ public class Camera2RawFragment extends Fragment { Size largestJpeg = Collections.max(Arrays.asList(map.getOutputSizes(ImageFormat.JPEG)), new CompareSizesByArea()); Size largestRaw = Collections.max(Arrays.asList(map.getOutputSizes(ImageFormat.RAW_SENSOR)), new CompareSizesByArea()); +// Size largestRaw = Arrays.asList(map.getOutputSizes(ImageFormat.RAW_SENSOR)).get(1); synchronized (mCameraStateLock) { // Set up ImageReaders for JPEG and RAW outputs. Place these in a reference @@ -982,8 +983,8 @@ public class Camera2RawFragment extends Fragment { } // Find the best preview size for these view dimensions and configured JPEG size. - Size previewSize = chooseOptimalSize(map.getOutputSizes(SurfaceTexture.class), rotatedViewWidth, rotatedViewHeight, maxPreviewWidth, maxPreviewHeight, largestJpeg); -// Size previewSize = new Size(3840, 2160); +// Size previewSize = chooseOptimalSize(map.getOutputSizes(SurfaceTexture.class), rotatedViewWidth, rotatedViewHeight, maxPreviewWidth, maxPreviewHeight, largestJpeg); + Size previewSize = new Size(3840, 2160); if (swappedDimensions) { mTextureView.setAspectRatio(previewSize.getHeight(), previewSize.getWidth()); @@ -1137,7 +1138,6 @@ public class Camera2RawFragment extends Fragment { // ImageSaverBuilder jpegBuilder = new ImageSaverBuilder(activity).setCharacteristics(mCharacteristics); ImageSaverBuilder rawBuilder = new ImageSaverBuilder(activity).setCharacteristics(mCharacteristics);//保存拍照参数 - rawBuilder.setExposetime((long) v);//保存曝光时间 rawBuilder.setList(mlist); // mJpegResultQueue.put((int) request.getTag(), jpegBuilder); mRawResultQueue.put((int) request.getTag(), rawBuilder); @@ -1180,7 +1180,6 @@ public class Camera2RawFragment extends Fragment { private void dequeueAndSaveImage(TreeMap pendingQueue, RefCountedAutoCloseable reader) { synchronized (mCameraStateLock) { - reader.get(); Map.Entry entry = null; if (pendingQueue != null) { for (Map.Entry item : pendingQueue.entrySet()) { diff --git a/app/src/main/java/com/xypower/mppreview/ImageSaver.java b/app/src/main/java/com/xypower/mppreview/ImageSaver.java index a554621..75d78e7 100644 --- a/app/src/main/java/com/xypower/mppreview/ImageSaver.java +++ b/app/src/main/java/com/xypower/mppreview/ImageSaver.java @@ -6,6 +6,7 @@ import static com.xypower.mppreview.HdrUtil.generateTimestamp; import android.content.Context; import android.graphics.ImageFormat; import android.hardware.camera2.CameraCharacteristics; +import android.hardware.camera2.CaptureRequest; import android.hardware.camera2.CaptureResult; import android.hardware.camera2.DngCreator; import android.media.Image; @@ -33,18 +34,16 @@ public class ImageSaver implements Runnable { private final Context mContext; private final Camera2RawFragment.RefCountedAutoCloseable mReader; - private final long mExpostime; private ArrayList mlist = new ArrayList<>();//用来存储已拍照的照片名称 - public ImageSaver(Image image, File file, CaptureResult result, CameraCharacteristics characteristics, Context context, Camera2RawFragment.RefCountedAutoCloseable reader, long mexpostime, ArrayList list) { + public ImageSaver(Image image, File file, CaptureResult result, CameraCharacteristics characteristics, Context context, Camera2RawFragment.RefCountedAutoCloseable reader, ArrayList list) { mImage = image; mFile = file; mCaptureResult = result; mCharacteristics = characteristics; mContext = context; mReader = reader; - mExpostime = mexpostime; mlist = list; } @@ -91,9 +90,10 @@ public class ImageSaver implements Runnable { } mReader.close(); if (success) { + Long t = mCaptureResult.get(CaptureResult.SENSOR_EXPOSURE_TIME); File directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); String directoryPath = directory.getPath(); - File file = new File(directory, "create_" + mExpostime + "_" + generateTimestamp() + ".png"); + File file = new File(directory, "create_" + t + "_" + generateTimestamp() + ".png"); String path = file.getPath(); Log.e("测试测试", "开始转化:" + System.currentTimeMillis()); try { @@ -102,7 +102,7 @@ public class ImageSaver implements Runnable { throw new RuntimeException(e); } PngPhotoBean bean = new PngPhotoBean(); - bean.setEtime(mExpostime); + bean.setEtime(t); bean.setPath(path); mlist.add(bean); Log.e("测试测试", "转化结束:" + System.currentTimeMillis()); @@ -113,7 +113,6 @@ public class ImageSaver implements Runnable { String path1 = bean1.getPath(); String path2 = bean2.getPath(); String outputPath = directoryPath + "/" + "hdr_" + generateTimestamp() + ".png"; - Log.e("测试测试", "照片路径:" + path1 + " 照片路径:" + path2 + " 生成路径:" + outputPath); boolean b = makeHdr(bean1.getEtime(), path1, bean2.getEtime(), path2, outputPath); Log.e("测试测试", "合成结束:" + System.currentTimeMillis()); } diff --git a/app/src/main/java/com/xypower/mppreview/ImageSaverBuilder.java b/app/src/main/java/com/xypower/mppreview/ImageSaverBuilder.java index bb57bb3..1984cef 100644 --- a/app/src/main/java/com/xypower/mppreview/ImageSaverBuilder.java +++ b/app/src/main/java/com/xypower/mppreview/ImageSaverBuilder.java @@ -18,7 +18,6 @@ public class ImageSaverBuilder { public CaptureResult mCaptureResult; public CameraCharacteristics mCharacteristics; public Context mContext; - public long mexpostime; public Camera2RawFragment.RefCountedAutoCloseable mReader; private ArrayList mlist; @@ -33,12 +32,6 @@ public class ImageSaverBuilder { mContext = context; } - public synchronized ImageSaverBuilder setExposetime(long time) { - - mexpostime = time; - return this; - } - public synchronized ImageSaverBuilder setRefCountedReader(Camera2RawFragment.RefCountedAutoCloseable reader) { if (reader == null) throw new NullPointerException(); @@ -80,7 +73,7 @@ public class ImageSaverBuilder { if (!isComplete()) { return null; } - return new ImageSaver(mImage, mFile, mCaptureResult, mCharacteristics, mContext, mReader, mexpostime, mlist); + return new ImageSaver(mImage, mFile, mCaptureResult, mCharacteristics, mContext, mReader, mlist); } public synchronized String getSaveLocation() {