|
|
|
@ -31,13 +31,14 @@ public class ImageSaver implements Runnable {
|
|
|
|
|
private final File mFile;
|
|
|
|
|
private final CaptureResult mCaptureResult;
|
|
|
|
|
private final CameraCharacteristics mCharacteristics;
|
|
|
|
|
private CompleteCallback mCallback;
|
|
|
|
|
private final Context mContext;
|
|
|
|
|
|
|
|
|
|
private final Camera2RawFragment.RefCountedAutoCloseable<ImageReader> mReader;
|
|
|
|
|
|
|
|
|
|
private ArrayList<PngPhotoBean> mlist = new ArrayList<>();//用来存储已拍照的照片名称
|
|
|
|
|
|
|
|
|
|
public ImageSaver(Image image, File file, CaptureResult result, CameraCharacteristics characteristics, Context context, Camera2RawFragment.RefCountedAutoCloseable<ImageReader> reader, ArrayList<PngPhotoBean> list) {
|
|
|
|
|
public ImageSaver(Image image, File file, CaptureResult result, CameraCharacteristics characteristics, Context context, Camera2RawFragment.RefCountedAutoCloseable<ImageReader> reader, ArrayList<PngPhotoBean> list,CompleteCallback callback) {
|
|
|
|
|
mImage = image;
|
|
|
|
|
mFile = file;
|
|
|
|
|
mCaptureResult = result;
|
|
|
|
@ -45,6 +46,7 @@ public class ImageSaver implements Runnable {
|
|
|
|
|
mContext = context;
|
|
|
|
|
mReader = reader;
|
|
|
|
|
mlist = list;
|
|
|
|
|
mCallback = callback;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -95,7 +97,6 @@ public class ImageSaver implements Runnable {
|
|
|
|
|
String directoryPath = directory.getPath();
|
|
|
|
|
File file = new File(directory, "create_" + t + "_" + generateTimestamp() + ".png");
|
|
|
|
|
String path = file.getPath();
|
|
|
|
|
Log.e("测试测试", "开始转化:" + System.currentTimeMillis());
|
|
|
|
|
try {
|
|
|
|
|
RawToJpgConverter.convertRawToJpg(mFile.getPath(), path);
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
@ -105,16 +106,28 @@ public class ImageSaver implements Runnable {
|
|
|
|
|
bean.setEtime(t);
|
|
|
|
|
bean.setPath(path);
|
|
|
|
|
mlist.add(bean);
|
|
|
|
|
Log.e("测试测试", "转化结束:" + System.currentTimeMillis());
|
|
|
|
|
if (mFile.exists()) {
|
|
|
|
|
mFile.delete();
|
|
|
|
|
}
|
|
|
|
|
if (mlist.size() == 2) {
|
|
|
|
|
Log.e("测试测试", "开始合成:" + System.currentTimeMillis());
|
|
|
|
|
PngPhotoBean bean1 = mlist.get(0);
|
|
|
|
|
PngPhotoBean bean2 = mlist.get(1);
|
|
|
|
|
String path1 = bean1.getPath();
|
|
|
|
|
String path2 = bean2.getPath();
|
|
|
|
|
String outputPath = directoryPath + "/" + "hdr_" + generateTimestamp() + ".png";
|
|
|
|
|
boolean b = makeHdr(bean1.getEtime(), path1, bean2.getEtime(), path2, outputPath);
|
|
|
|
|
Log.e("测试测试", "合成结束:" + System.currentTimeMillis());
|
|
|
|
|
if (b) {
|
|
|
|
|
mCallback.onResult();
|
|
|
|
|
// Toast.makeText(mContext.getApplicationContext(), "图片HDR成功", Toast.LENGTH_SHORT).show();
|
|
|
|
|
File file1 = new File(path1);
|
|
|
|
|
File file2 = new File(path2);
|
|
|
|
|
if (file1.exists()) {
|
|
|
|
|
file1.delete();
|
|
|
|
|
}
|
|
|
|
|
if (file2.exists()) {
|
|
|
|
|
file2.delete();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|