diff --git a/assets/profiles/raw.pp3 b/assets/profiles/raw.pp3 new file mode 100644 index 000000000..f9196bb30 --- /dev/null +++ b/assets/profiles/raw.pp3 @@ -0,0 +1,45 @@ +[Exposure] +Auto=false +HistogramMatching=true + +[HLRecovery] +Enabled=true +Method=Blend + +[Directional Pyramid Denoising] +Enabled=true +Enhance=false +Median=false +Luma=0 +Ldetail=0 +Chroma=0 +Method=Lab +LMethod=SLI +CMethod=AUT +C2Method=AUTO +SMethod=shal +MedMethod=55 +RGBMethod=soft +MethodMed=Lpab +Redchro=0 +Bluechro=0 +Gamma=1.7 +Passes=1 +LCurve=0; +CCCurve=0; + +[LensProfile] +LcMode=lfauto +UseDistortion=true +UseVignette=true +UseCA=false + +[Color Management] +ToneCurve=false +ApplyLookTable=true +ApplyBaselineExposureOffset=true +ApplyHueSatMap=true +DCPIlluminant=0 + +[RAW] +CA=true diff --git a/internal/photoprism/convert.go b/internal/photoprism/convert.go index ad9a4230a..ebb66d5c0 100644 --- a/internal/photoprism/convert.go +++ b/internal/photoprism/convert.go @@ -191,8 +191,9 @@ func (c *Convert) JpegConvertCommand(mf *MediaFile, jpegName string, xmpName str result = exec.Command(c.conf.DarktableBin(), args...) } else if c.conf.RawtherapeeBin() != "" { jpegQuality := fmt.Sprintf("-j%d", c.conf.JpegQuality()) + profile := filepath.Join(conf.AssetsPath(), "profiles", "raw.pp3") - args := []string{"-o", jpegName, "-d", jpegQuality, "-js3", "-b8", "-c", mf.FileName()} + args := []string{"-o", jpegName, "-p", profile, "-d", jpegQuality, "-js3", "-b8", "-c", mf.FileName()} result = exec.Command(c.conf.RawtherapeeBin(), args...) } else { diff --git a/internal/photoprism/index_mediafile.go b/internal/photoprism/index_mediafile.go index 49aff6ef6..dc47f503c 100644 --- a/internal/photoprism/index_mediafile.go +++ b/internal/photoprism/index_mediafile.go @@ -330,6 +330,34 @@ func (ind *Index) MediaFile(m *MediaFile, o IndexOptions, originalName string) ( if res := m.Megapixels(); res > photo.PhotoResolution { photo.PhotoResolution = res } + + if photo.CameraSrc == entity.SrcAuto { + // Set UpdateCamera, Lens, Focal Length and F Number. + photo.Camera = entity.FirstOrCreateCamera(entity.NewCamera(m.CameraModel(), m.CameraMake())) + + if photo.Camera != nil { + photo.CameraID = photo.Camera.ID + } else { + photo.CameraID = entity.UnknownCamera.ID + } + + if photo.CameraID != entity.UnknownCamera.ID { + photo.CameraSrc = entity.SrcMeta + } + + photo.Lens = entity.FirstOrCreateLens(entity.NewLens(m.LensModel(), m.LensMake())) + + if photo.Lens != nil { + photo.LensID = photo.Lens.ID + } else { + photo.LensID = entity.UnknownLens.ID + } + + photo.PhotoFocalLength = m.FocalLength() + photo.PhotoFNumber = m.FNumber() + photo.PhotoIso = m.Iso() + photo.PhotoExposure = m.Exposure() + } } if photo.TypeSrc == entity.SrcAuto { @@ -490,6 +518,10 @@ func (ind *Index) MediaFile(m *MediaFile, o IndexOptions, originalName string) ( photo.CameraID = entity.UnknownCamera.ID } + if photo.CameraID != entity.UnknownCamera.ID { + photo.CameraSrc = entity.SrcMeta + } + photo.Lens = entity.FirstOrCreateLens(entity.NewLens(m.LensModel(), m.LensMake())) if photo.Lens != nil {