From 61e43d48e045253abcab5def32494e1bf03980b4 Mon Sep 17 00:00:00 2001 From: liuguijing <123456> Date: Fri, 20 Dec 2024 21:59:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0HDR=E8=BF=9E=E6=8B=8D?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xypower/mppreview/Camera2RawFragment.java | 9 +++++++-- .../java/com/xypower/mppreview/ImageSaver.java | 16 ++++++++++------ .../com/xypower/mppreview/ImageSaverBuilder.java | 15 +++++++++++++-- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/xypower/mppreview/Camera2RawFragment.java b/app/src/main/java/com/xypower/mppreview/Camera2RawFragment.java index a827e01..0f3b5ce 100644 --- a/app/src/main/java/com/xypower/mppreview/Camera2RawFragment.java +++ b/app/src/main/java/com/xypower/mppreview/Camera2RawFragment.java @@ -59,6 +59,7 @@ import android.widget.Button; import android.widget.Toast; import com.xypower.mppreview.bean.Contants; +import com.xypower.mppreview.bean.PngPhotoBean; import com.xypower.mppreview.widget.ErrorDialog; import java.io.File; @@ -143,6 +144,7 @@ public class Camera2RawFragment extends Fragment { private double pic1 = 0; + private ArrayList mlist = new ArrayList<>(); /** * {@link TextureView.SurfaceTextureListener} handles several lifecycle events of a * {@link TextureView}. @@ -459,7 +461,7 @@ public class Camera2RawFragment extends Fragment { StringBuilder sb = new StringBuilder(); synchronized (mCameraStateLock) { - jpegBuilder = mJpegResultQueue.get(requestId); +// jpegBuilder = mJpegResultQueue.get(requestId); rawBuilder = mRawResultQueue.get(requestId); // if (jpegBuilder != null) { @@ -474,7 +476,7 @@ public class Camera2RawFragment extends Fragment { sb.append(rawBuilder.getSaveLocation()); } - handleCompletionLocked(requestId, jpegBuilder, mJpegResultQueue); +// handleCompletionLocked(requestId, jpegBuilder, mJpegResultQueue); handleCompletionLocked(requestId, rawBuilder, mRawResultQueue); finishedCaptureLocked(); @@ -1044,6 +1046,7 @@ public class Camera2RawFragment extends Fragment { } public void takePicture() { + mlist = new ArrayList<>(); synchronized (mCameraStateLock) { mPendingUserCaptures++; if (mState != STATE_PREVIEW) { @@ -1136,10 +1139,12 @@ public class Camera2RawFragment extends Fragment { } } } + CaptureRequest request = captureBuilder.build(); // 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); requests.add(request); diff --git a/app/src/main/java/com/xypower/mppreview/ImageSaver.java b/app/src/main/java/com/xypower/mppreview/ImageSaver.java index 2cc78e8..86adb2c 100644 --- a/app/src/main/java/com/xypower/mppreview/ImageSaver.java +++ b/app/src/main/java/com/xypower/mppreview/ImageSaver.java @@ -11,7 +11,9 @@ import android.hardware.camera2.DngCreator; import android.media.Image; import android.media.ImageReader; import android.os.Environment; +import android.widget.Toast; +import com.xypower.mppreview.bean.Contants; import com.xypower.mppreview.bean.PngPhotoBean; import java.io.File; @@ -32,9 +34,9 @@ public class ImageSaver implements Runnable { private final Camera2RawFragment.RefCountedAutoCloseable mReader; private final long mExpostime; - private static ArrayList list = new ArrayList<>();//用来存储已拍照的照片名称 + private ArrayList mlist = new ArrayList<>();//用来存储已拍照的照片名称 - public ImageSaver(Image image, File file, CaptureResult result, CameraCharacteristics characteristics, Context context, Camera2RawFragment.RefCountedAutoCloseable reader, long mexpostime) { + public ImageSaver(Image image, File file, CaptureResult result, CameraCharacteristics characteristics, Context context, Camera2RawFragment.RefCountedAutoCloseable reader, long mexpostime, ArrayList list) { mImage = image; mFile = file; mCaptureResult = result; @@ -42,6 +44,7 @@ public class ImageSaver implements Runnable { mContext = context; mReader = reader; mExpostime = mexpostime; + mlist = list; } @Override @@ -87,6 +90,7 @@ public class ImageSaver implements Runnable { } mReader.close(); if (success) { + File directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); String directoryPath = directory.getPath(); File file = new File(directory, "create_" + mExpostime + "_" + generateTimestamp() + ".png"); @@ -99,10 +103,10 @@ public class ImageSaver implements Runnable { PngPhotoBean bean = new PngPhotoBean(); bean.setEtime(mExpostime); bean.setPath(path); - list.add(bean); - if (list.size() == 2) { - PngPhotoBean bean1 = list.get(0); - PngPhotoBean bean2 = list.get(1); + mlist.add(bean); + if (mlist.size() == 2) { + PngPhotoBean bean1 = mlist.get(0); + PngPhotoBean bean2 = mlist.get(1); makeHdr(bean1.getEtime(), bean1.getPath(), bean2.getEtime(), bean2.getPath(), directoryPath + "/" + "hdr_" + generateTimestamp() + ".png"); } } diff --git a/app/src/main/java/com/xypower/mppreview/ImageSaverBuilder.java b/app/src/main/java/com/xypower/mppreview/ImageSaverBuilder.java index 3909ca7..bb57bb3 100644 --- a/app/src/main/java/com/xypower/mppreview/ImageSaverBuilder.java +++ b/app/src/main/java/com/xypower/mppreview/ImageSaverBuilder.java @@ -6,7 +6,11 @@ import android.hardware.camera2.CaptureResult; import android.media.Image; import android.media.ImageReader; +import com.xypower.mppreview.bean.PngPhotoBean; + import java.io.File; +import java.util.ArrayList; +import java.util.List; public class ImageSaverBuilder { public Image mImage; @@ -14,10 +18,11 @@ public class ImageSaverBuilder { public CaptureResult mCaptureResult; public CameraCharacteristics mCharacteristics; public Context mContext; - public long mexpostime; public Camera2RawFragment.RefCountedAutoCloseable mReader; + private ArrayList mlist; + /** * Construct a new ImageSaverBuilder using the given {@link Context}. * @@ -59,6 +64,12 @@ public class ImageSaverBuilder { return this; } + public synchronized ImageSaverBuilder setList(ArrayList list) { + if (list == null) throw new NullPointerException(); + mlist = list; + return this; + } + public synchronized ImageSaverBuilder setCharacteristics(final CameraCharacteristics characteristics) { if (characteristics == null) throw new NullPointerException(); mCharacteristics = characteristics; @@ -69,7 +80,7 @@ public class ImageSaverBuilder { if (!isComplete()) { return null; } - return new ImageSaver(mImage, mFile, mCaptureResult, mCharacteristics, mContext, mReader, mexpostime); + return new ImageSaver(mImage, mFile, mCaptureResult, mCharacteristics, mContext, mReader, mexpostime, mlist); } public synchronized String getSaveLocation() {