删除曝光变量,从captureresult中取得曝光值

mem
liuguijing 6 months ago
parent 5321d29cb3
commit 0fdfb20fb4

@ -655,6 +655,7 @@ public class Camera2RawFragment extends Fragment {
Size largestJpeg = Collections.max(Arrays.asList(map.getOutputSizes(ImageFormat.JPEG)), new CompareSizesByArea()); 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 = Collections.max(Arrays.asList(map.getOutputSizes(ImageFormat.RAW_SENSOR)), new CompareSizesByArea());
// Size largestRaw = Arrays.asList(map.getOutputSizes(ImageFormat.RAW_SENSOR)).get(1);
synchronized (mCameraStateLock) { synchronized (mCameraStateLock) {
// Set up ImageReaders for JPEG and RAW outputs. Place these in a reference // 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. // 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 = chooseOptimalSize(map.getOutputSizes(SurfaceTexture.class), rotatedViewWidth, rotatedViewHeight, maxPreviewWidth, maxPreviewHeight, largestJpeg);
// Size previewSize = new Size(3840, 2160); Size previewSize = new Size(3840, 2160);
if (swappedDimensions) { if (swappedDimensions) {
mTextureView.setAspectRatio(previewSize.getHeight(), previewSize.getWidth()); mTextureView.setAspectRatio(previewSize.getHeight(), previewSize.getWidth());
@ -1137,7 +1138,6 @@ public class Camera2RawFragment extends Fragment {
// ImageSaverBuilder jpegBuilder = new ImageSaverBuilder(activity).setCharacteristics(mCharacteristics); // ImageSaverBuilder jpegBuilder = new ImageSaverBuilder(activity).setCharacteristics(mCharacteristics);
ImageSaverBuilder rawBuilder = new ImageSaverBuilder(activity).setCharacteristics(mCharacteristics);//保存拍照参数 ImageSaverBuilder rawBuilder = new ImageSaverBuilder(activity).setCharacteristics(mCharacteristics);//保存拍照参数
rawBuilder.setExposetime((long) v);//保存曝光时间
rawBuilder.setList(mlist); rawBuilder.setList(mlist);
// mJpegResultQueue.put((int) request.getTag(), jpegBuilder); // mJpegResultQueue.put((int) request.getTag(), jpegBuilder);
mRawResultQueue.put((int) request.getTag(), rawBuilder); mRawResultQueue.put((int) request.getTag(), rawBuilder);
@ -1180,7 +1180,6 @@ public class Camera2RawFragment extends Fragment {
private void dequeueAndSaveImage(TreeMap<Integer, ImageSaverBuilder> pendingQueue, RefCountedAutoCloseable<ImageReader> reader) { private void dequeueAndSaveImage(TreeMap<Integer, ImageSaverBuilder> pendingQueue, RefCountedAutoCloseable<ImageReader> reader) {
synchronized (mCameraStateLock) { synchronized (mCameraStateLock) {
reader.get();
Map.Entry<Integer, ImageSaverBuilder> entry = null; Map.Entry<Integer, ImageSaverBuilder> entry = null;
if (pendingQueue != null) { if (pendingQueue != null) {
for (Map.Entry<Integer, ImageSaverBuilder> item : pendingQueue.entrySet()) { for (Map.Entry<Integer, ImageSaverBuilder> item : pendingQueue.entrySet()) {

@ -6,6 +6,7 @@ import static com.xypower.mppreview.HdrUtil.generateTimestamp;
import android.content.Context; import android.content.Context;
import android.graphics.ImageFormat; import android.graphics.ImageFormat;
import android.hardware.camera2.CameraCharacteristics; import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CaptureRequest;
import android.hardware.camera2.CaptureResult; import android.hardware.camera2.CaptureResult;
import android.hardware.camera2.DngCreator; import android.hardware.camera2.DngCreator;
import android.media.Image; import android.media.Image;
@ -33,18 +34,16 @@ public class ImageSaver implements Runnable {
private final Context mContext; private final Context mContext;
private final Camera2RawFragment.RefCountedAutoCloseable<ImageReader> mReader; private final Camera2RawFragment.RefCountedAutoCloseable<ImageReader> mReader;
private final long mExpostime;
private ArrayList<PngPhotoBean> mlist = new ArrayList<>();//用来存储已拍照的照片名称 private ArrayList<PngPhotoBean> mlist = new ArrayList<>();//用来存储已拍照的照片名称
public ImageSaver(Image image, File file, CaptureResult result, CameraCharacteristics characteristics, Context context, Camera2RawFragment.RefCountedAutoCloseable<ImageReader> reader, long mexpostime, ArrayList<PngPhotoBean> list) { public ImageSaver(Image image, File file, CaptureResult result, CameraCharacteristics characteristics, Context context, Camera2RawFragment.RefCountedAutoCloseable<ImageReader> reader, ArrayList<PngPhotoBean> list) {
mImage = image; mImage = image;
mFile = file; mFile = file;
mCaptureResult = result; mCaptureResult = result;
mCharacteristics = characteristics; mCharacteristics = characteristics;
mContext = context; mContext = context;
mReader = reader; mReader = reader;
mExpostime = mexpostime;
mlist = list; mlist = list;
} }
@ -91,9 +90,10 @@ public class ImageSaver implements Runnable {
} }
mReader.close(); mReader.close();
if (success) { if (success) {
Long t = mCaptureResult.get(CaptureResult.SENSOR_EXPOSURE_TIME);
File directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); File directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
String directoryPath = directory.getPath(); 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(); String path = file.getPath();
Log.e("测试测试", "开始转化:" + System.currentTimeMillis()); Log.e("测试测试", "开始转化:" + System.currentTimeMillis());
try { try {
@ -102,7 +102,7 @@ public class ImageSaver implements Runnable {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
PngPhotoBean bean = new PngPhotoBean(); PngPhotoBean bean = new PngPhotoBean();
bean.setEtime(mExpostime); bean.setEtime(t);
bean.setPath(path); bean.setPath(path);
mlist.add(bean); mlist.add(bean);
Log.e("测试测试", "转化结束:" + System.currentTimeMillis()); Log.e("测试测试", "转化结束:" + System.currentTimeMillis());
@ -113,7 +113,6 @@ public class ImageSaver implements Runnable {
String path1 = bean1.getPath(); String path1 = bean1.getPath();
String path2 = bean2.getPath(); String path2 = bean2.getPath();
String outputPath = directoryPath + "/" + "hdr_" + generateTimestamp() + ".png"; String outputPath = directoryPath + "/" + "hdr_" + generateTimestamp() + ".png";
Log.e("测试测试", "照片路径:" + path1 + " 照片路径:" + path2 + " 生成路径:" + outputPath);
boolean b = makeHdr(bean1.getEtime(), path1, bean2.getEtime(), path2, outputPath); boolean b = makeHdr(bean1.getEtime(), path1, bean2.getEtime(), path2, outputPath);
Log.e("测试测试", "合成结束:" + System.currentTimeMillis()); Log.e("测试测试", "合成结束:" + System.currentTimeMillis());
} }

@ -18,7 +18,6 @@ public class ImageSaverBuilder {
public CaptureResult mCaptureResult; public CaptureResult mCaptureResult;
public CameraCharacteristics mCharacteristics; public CameraCharacteristics mCharacteristics;
public Context mContext; public Context mContext;
public long mexpostime;
public Camera2RawFragment.RefCountedAutoCloseable<ImageReader> mReader; public Camera2RawFragment.RefCountedAutoCloseable<ImageReader> mReader;
private ArrayList<PngPhotoBean> mlist; private ArrayList<PngPhotoBean> mlist;
@ -33,12 +32,6 @@ public class ImageSaverBuilder {
mContext = context; mContext = context;
} }
public synchronized ImageSaverBuilder setExposetime(long time) {
mexpostime = time;
return this;
}
public synchronized ImageSaverBuilder setRefCountedReader(Camera2RawFragment.RefCountedAutoCloseable<ImageReader> reader) { public synchronized ImageSaverBuilder setRefCountedReader(Camera2RawFragment.RefCountedAutoCloseable<ImageReader> reader) {
if (reader == null) throw new NullPointerException(); if (reader == null) throw new NullPointerException();
@ -80,7 +73,7 @@ public class ImageSaverBuilder {
if (!isComplete()) { if (!isComplete()) {
return null; 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() { public synchronized String getSaveLocation() {

Loading…
Cancel
Save