Skip to content

Commit

Permalink
Frontend: Hide downscaling filter selector when libvips is used #1474
Browse files Browse the repository at this point in the history
Signed-off-by: Michael Mayer <michael@photoprism.app>
  • Loading branch information
lastzero committed May 18, 2024
1 parent fd853e0 commit cb84ed0
Show file tree
Hide file tree
Showing 9 changed files with 39 additions and 20 deletions.
12 changes: 6 additions & 6 deletions frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions frontend/src/model/config-options.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ export class ConfigOptions extends Model {
UploadNSFW: config.values.uploadNSFW,
RawPresets: false,
ThumbUncached: true,
ThumbLibrary: "",
ThumbColor: "",
ThumbFilter: "",
ThumbSize: 0,
ThumbSizeUncached: 0,
Expand Down
9 changes: 6 additions & 3 deletions frontend/src/page/settings/advanced.vue
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
color="secondary-dark"
:label="$gettext('Database Backups')"
:hint="$gettext('Create index backups based on the configured schedule.')"
prepend-icon="healing"
prepend-icon="history"
persistent-hint
@change="onChange"
>
Expand Down Expand Up @@ -110,7 +110,7 @@

<v-card-actions>
<v-layout wrap align-top>
<v-flex xs12 class="px-2 pb-2">
<v-flex v-if="settings.ThumbLibrary === 'imaging'" xs12 class="px-2 pb-2">
<v-select v-model="settings.ThumbFilter" :disabled="busy" :items="options.ThumbFilters()" :label="$gettext('Downscaling Filter')" color="secondary-dark" background-color="secondary-light" hide-details box @change="onChange"></v-select>
</v-flex>

Expand Down Expand Up @@ -333,7 +333,10 @@ export default {
}
this.busy = true;
this.settings.load().finally(() => (this.busy = false));
this.settings.load().finally(() => {
this.busy = false;
console.log("SETTINGS", this.settings);
});
},
onChange() {
if (this.busy || this.isDemo) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,23 @@ func (c *Config) JpegQuality() thumb.Quality {

// ThumbLibrary returns the name of the image processing library to be used for generating thumbnails.
func (c *Config) ThumbLibrary() string {
switch clean.TypeLowerUnderscore(c.options.ThumbLibrary) {
case thumb.LibImaging, "", "imagine", "internal":
switch c.options.ThumbLibrary {
case thumb.LibVips, thumb.LibAuto:
return thumb.LibVips
case thumb.LibImaging:
return thumb.LibImaging
default:
c.options.ThumbLibrary = clean.TypeLowerUnderscore(c.options.ThumbLibrary)

if c.options.ThumbLibrary == "imagine" || c.options.ThumbLibrary == "" {
c.options.ThumbLibrary = thumb.LibImaging
return thumb.LibImaging
} else if c.options.ThumbLibrary == "vips" || c.options.ThumbLibrary == "libvips" {
c.options.ThumbLibrary = thumb.LibVips
} else {
c.options.ThumbLibrary = thumb.LibAuto
}

return thumb.LibVips
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,17 +48,17 @@ func TestConfig_JpegQuality(t *testing.T) {
func TestConfig_ThumbFilter(t *testing.T) {
c := NewConfig(CliTestContext())

assert.Equal(t, thumb.ResampleAuto, c.ThumbFilter())
assert.Equal(t, thumb.ResampleLanczos, c.ThumbFilter())
c.options.ThumbFilter = "blackman"
assert.Equal(t, thumb.ResampleBlackman, c.ThumbFilter())
c.options.ThumbFilter = "lanczos"
assert.Equal(t, thumb.ResampleLanczos, c.ThumbFilter())
c.options.ThumbFilter = "linear"
assert.Equal(t, thumb.ResampleLinear, c.ThumbFilter())
c.options.ThumbFilter = "auto"
assert.Equal(t, thumb.ResampleAuto, c.ThumbFilter())
assert.Equal(t, thumb.ResampleLanczos, c.ThumbFilter())
c.options.ThumbFilter = ""
assert.Equal(t, thumb.ResampleAuto, c.ThumbFilter())
assert.Equal(t, thumb.ResampleLanczos, c.ThumbFilter())
}

func TestConfig_ThumbSizeUncached(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion internal/thumb/filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,6 @@ func ParseFilter(name string, lib Lib) ResampleFilter {
case ResampleBlackman, ResampleLanczos, ResampleCubic, ResampleLinear, ResampleNearest:
return filter
default:
return ResampleAuto
return ResampleLanczos
}
}
6 changes: 3 additions & 3 deletions internal/thumb/filter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ func TestParseFilter(t *testing.T) {
assert.Equal(t, ResampleAuto, ParseFilter("invalid", LibVips))
})
t.Run("Imaging", func(t *testing.T) {
assert.Equal(t, ResampleAuto, ParseFilter("", LibImaging))
assert.Equal(t, ResampleAuto, ParseFilter("auto", LibImaging))
assert.Equal(t, ResampleLanczos, ParseFilter("", LibImaging))
assert.Equal(t, ResampleLanczos, ParseFilter("auto", LibImaging))
assert.Equal(t, ResampleBlackman, ParseFilter("blackman", LibImaging))
assert.Equal(t, ResampleLanczos, ParseFilter("lanczos", LibImaging))
assert.Equal(t, ResampleCubic, ParseFilter("cubic", LibImaging))
assert.Equal(t, ResampleLinear, ParseFilter("linear", LibImaging))
assert.Equal(t, ResampleAuto, ParseFilter("invalid", LibImaging))
assert.Equal(t, ResampleLanczos, ParseFilter("invalid", LibImaging))
})
}
1 change: 1 addition & 0 deletions internal/thumb/generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ type Lib = string

// Supported image processing libraries.
const (
LibAuto Lib = "auto"
LibVips Lib = "vips"
LibImaging Lib = "imaging"
)
Expand Down
4 changes: 2 additions & 2 deletions internal/thumb/open.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ func Open(fileName string, orientation int) (result image.Image, err error) {
return result, err
}

// Open JPEG as sRGB image?
if Color == ColorSRGB && fs.FileType(fileName) == fs.ImageJPEG {
// Open JPEG image with color processing?
if Color != ColorNone && fs.FileType(fileName) == fs.ImageJPEG {
return OpenJpeg(fileName, orientation)
}

Expand Down

0 comments on commit cb84ed0

Please sign in to comment.