mirror of
https://github.com/gen2brain/cbconvert
synced 2026-09-04 04:31:11 +02:00
Switch to pure Go JPEG, WEBP, AVIF and JXL codecs
This commit is contained in:
@@ -74,8 +74,8 @@ func init() {
|
||||
EffortSpeed: "Rychlost",
|
||||
EffortEffort: "Úsilí",
|
||||
TipEffortWebp: "Metoda WEBP, vyšší je lepší/pomalejší (0-6, výchozí 4)",
|
||||
TipEffortAvif: "Rychlost AVIF, vyšší je rychlejší/horší (0-10, výchozí 10)",
|
||||
TipEffortJxl: "Úsilí JXL, vyšší je lepší/pomalejší (1-10, výchozí 7)",
|
||||
TipEffortAvif: "Rychlost AVIF, vyšší je rychlejší/horší (0-10, výchozí 6)",
|
||||
TipEffortJxl: "Úsilí JXL, vyšší je lepší/pomalejší (1-7, výchozí 7)",
|
||||
|
||||
BtnAddFiles: "Přidat &soubory...",
|
||||
BtnAddDir: "Přidat &adresář...",
|
||||
|
||||
@@ -74,8 +74,8 @@ func init() {
|
||||
EffortSpeed: "Geschwindigkeit",
|
||||
EffortEffort: "Aufwand",
|
||||
TipEffortWebp: "WEBP-Methode, höher ist besser/langsamer (0-6, Standard 4)",
|
||||
TipEffortAvif: "AVIF-Geschwindigkeit, höher ist schneller/schlechter (0-10, Standard 10)",
|
||||
TipEffortJxl: "JXL-Aufwand, höher ist besser/langsamer (1-10, Standard 7)",
|
||||
TipEffortAvif: "AVIF-Geschwindigkeit, höher ist schneller/schlechter (0-10, Standard 6)",
|
||||
TipEffortJxl: "JXL-Aufwand, höher ist besser/langsamer (1-7, Standard 7)",
|
||||
|
||||
BtnAddFiles: "&Dateien hinzufügen...",
|
||||
BtnAddDir: "&Verzeichnis hinzufügen...",
|
||||
|
||||
@@ -74,8 +74,8 @@ func init() {
|
||||
EffortSpeed: "Speed",
|
||||
EffortEffort: "Effort",
|
||||
TipEffortWebp: "WEBP method, higher is better/slower (0-6, default 4)",
|
||||
TipEffortAvif: "AVIF speed, higher is faster/worse (0-10, default 10)",
|
||||
TipEffortJxl: "JXL effort, higher is better/slower (1-10, default 7)",
|
||||
TipEffortAvif: "AVIF speed, higher is faster/worse (0-10, default 6)",
|
||||
TipEffortJxl: "JXL effort, higher is better/slower (1-7, default 7)",
|
||||
|
||||
BtnAddFiles: "Add &Files...",
|
||||
BtnAddDir: "Add &Dir...",
|
||||
|
||||
@@ -74,8 +74,8 @@ func init() {
|
||||
EffortSpeed: "Velocidad",
|
||||
EffortEffort: "Esfuerzo",
|
||||
TipEffortWebp: "Método WEBP, más alto es mejor/más lento (0-6, predeterminado 4)",
|
||||
TipEffortAvif: "Velocidad AVIF, más alto es más rápido/peor (0-10, predeterminado 10)",
|
||||
TipEffortJxl: "Esfuerzo JXL, más alto es mejor/más lento (1-10, predeterminado 7)",
|
||||
TipEffortAvif: "Velocidad AVIF, más alto es más rápido/peor (0-10, predeterminado 6)",
|
||||
TipEffortJxl: "Esfuerzo JXL, más alto es mejor/más lento (1-7, predeterminado 7)",
|
||||
|
||||
BtnAddFiles: "Añadir &archivos...",
|
||||
BtnAddDir: "Añadir &directorio...",
|
||||
|
||||
@@ -74,8 +74,8 @@ func init() {
|
||||
EffortSpeed: "Vitesse",
|
||||
EffortEffort: "Effort",
|
||||
TipEffortWebp: "Méthode WEBP, plus élevé est meilleur/plus lent (0-6, défaut 4)",
|
||||
TipEffortAvif: "Vitesse AVIF, plus élevé est plus rapide/moins bon (0-10, défaut 10)",
|
||||
TipEffortJxl: "Effort JXL, plus élevé est meilleur/plus lent (1-10, défaut 7)",
|
||||
TipEffortAvif: "Vitesse AVIF, plus élevé est plus rapide/moins bon (0-10, défaut 6)",
|
||||
TipEffortJxl: "Effort JXL, plus élevé est meilleur/plus lent (1-7, défaut 7)",
|
||||
|
||||
BtnAddFiles: "Ajouter des &fichiers...",
|
||||
BtnAddDir: "Ajouter un &dossier...",
|
||||
|
||||
@@ -74,8 +74,8 @@ func init() {
|
||||
EffortSpeed: "Velocità",
|
||||
EffortEffort: "Sforzo",
|
||||
TipEffortWebp: "Metodo WEBP, più alto è migliore/più lento (0-6, predefinito 4)",
|
||||
TipEffortAvif: "Velocità AVIF, più alto è più veloce/peggiore (0-10, predefinito 10)",
|
||||
TipEffortJxl: "Sforzo JXL, più alto è migliore/più lento (1-10, predefinito 7)",
|
||||
TipEffortAvif: "Velocità AVIF, più alto è più veloce/peggiore (0-10, predefinito 6)",
|
||||
TipEffortJxl: "Sforzo JXL, più alto è migliore/più lento (1-7, predefinito 7)",
|
||||
|
||||
BtnAddFiles: "Aggiungi &file...",
|
||||
BtnAddDir: "Aggiungi &cartella...",
|
||||
|
||||
@@ -74,8 +74,8 @@ func init() {
|
||||
EffortSpeed: "速度",
|
||||
EffortEffort: "労力",
|
||||
TipEffortWebp: "WEBP 方式、高いほど高品質/低速(0-6、既定 4)",
|
||||
TipEffortAvif: "AVIF 速度、高いほど高速/低品質(0-10、既定 10)",
|
||||
TipEffortJxl: "JXL 労力、高いほど高品質/低速(1-10、既定 7)",
|
||||
TipEffortAvif: "AVIF 速度、高いほど高速/低品質(0-10、既定 6)",
|
||||
TipEffortJxl: "JXL 労力、高いほど高品質/低速(1-7、既定 7)",
|
||||
|
||||
BtnAddFiles: "ファイルを追加(&F)...",
|
||||
BtnAddDir: "ディレクトリを追加(&D)...",
|
||||
|
||||
@@ -74,8 +74,8 @@ func init() {
|
||||
EffortSpeed: "Velocidade",
|
||||
EffortEffort: "Esforço",
|
||||
TipEffortWebp: "Método WEBP, mais alto é melhor/mais lento (0-6, padrão 4)",
|
||||
TipEffortAvif: "Velocidade AVIF, mais alto é mais rápido/pior (0-10, padrão 10)",
|
||||
TipEffortJxl: "Esforço JXL, mais alto é melhor/mais lento (1-10, padrão 7)",
|
||||
TipEffortAvif: "Velocidade AVIF, mais alto é mais rápido/pior (0-10, padrão 6)",
|
||||
TipEffortJxl: "Esforço JXL, mais alto é melhor/mais lento (1-7, padrão 7)",
|
||||
|
||||
BtnAddFiles: "Adicionar &arquivos...",
|
||||
BtnAddDir: "Adicionar &diretório...",
|
||||
|
||||
@@ -74,8 +74,8 @@ func init() {
|
||||
EffortSpeed: "Скорость",
|
||||
EffortEffort: "Усилие",
|
||||
TipEffortWebp: "Метод WEBP, выше — лучше/медленнее (0-6, по умолчанию 4)",
|
||||
TipEffortAvif: "Скорость AVIF, выше — быстрее/хуже (0-10, по умолчанию 10)",
|
||||
TipEffortJxl: "Усилие JXL, выше — лучше/медленнее (1-10, по умолчанию 7)",
|
||||
TipEffortAvif: "Скорость AVIF, выше — быстрее/хуже (0-10, по умолчанию 6)",
|
||||
TipEffortJxl: "Усилие JXL, выше — лучше/медленнее (1-7, по умолчанию 7)",
|
||||
|
||||
BtnAddFiles: "Добавить &файлы...",
|
||||
BtnAddDir: "Добавить &каталог...",
|
||||
|
||||
@@ -74,8 +74,8 @@ func init() {
|
||||
EffortSpeed: "速度",
|
||||
EffortEffort: "强度",
|
||||
TipEffortWebp: "WEBP 方法,越高越好/越慢(0-6,默认 4)",
|
||||
TipEffortAvif: "AVIF 速度,越高越快/越差(0-10,默认 10)",
|
||||
TipEffortJxl: "JXL 强度,越高越好/越慢(1-10,默认 7)",
|
||||
TipEffortAvif: "AVIF 速度,越高越快/越差(0-10,默认 6)",
|
||||
TipEffortJxl: "JXL 强度,越高越好/越慢(1-7,默认 7)",
|
||||
|
||||
BtnAddFiles: "添加文件(&F)...",
|
||||
BtnAddDir: "添加目录(&D)...",
|
||||
|
||||
@@ -1,38 +1,12 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
|
||||
"github.com/gen2brain/cbconvert/cmd/cbconvert-gui/i18n"
|
||||
"github.com/gen2brain/iup-go/iup"
|
||||
)
|
||||
|
||||
// jxlLosslessBuild reports whether wasm2go and nodynamic leave zune-jpegxl (lossless-only) as the only jxl encoder.
|
||||
var jxlLosslessBuild = func() bool {
|
||||
info, ok := debug.ReadBuildInfo()
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
var wasm2go, nodynamic bool
|
||||
for _, kv := range info.Settings {
|
||||
if kv.Key != "-tags" {
|
||||
continue
|
||||
}
|
||||
for _, t := range strings.Split(kv.Value, ",") {
|
||||
switch t {
|
||||
case "wasm2go":
|
||||
wasm2go = true
|
||||
case "nodynamic":
|
||||
nodynamic = true
|
||||
}
|
||||
}
|
||||
}
|
||||
return wasm2go && nodynamic
|
||||
}()
|
||||
|
||||
// userLossless is the user's Lossless preference, tracked separately because a jxl
|
||||
// wasm2go build force-sets the widget on.
|
||||
// userLossless is the user's Lossless preference, kept so switching to a format
|
||||
// without lossless support and back does not clear it.
|
||||
var userLossless bool
|
||||
|
||||
func setActive() {
|
||||
@@ -98,15 +72,13 @@ func setActive() {
|
||||
}
|
||||
|
||||
canLossless := opts.Format == "webp" || opts.Format == "avif" || opts.Format == "jxl"
|
||||
jxlLossless := jxlLosslessBuild && opts.Format == "jxl"
|
||||
|
||||
// jxl wasm2go forces lossless on; otherwise show the user's preference so it doesn't stay stuck on.
|
||||
losslessVal := "OFF"
|
||||
if jxlLossless || userLossless {
|
||||
if userLossless {
|
||||
losslessVal = "ON"
|
||||
}
|
||||
iup.GetHandle("Lossless").SetAttribute("VALUE", losslessVal)
|
||||
losslessOn := jxlLossless || (canLossless && userLossless)
|
||||
losslessOn := canLossless && userLossless
|
||||
|
||||
if (opts.Format == "jpeg" || canLossless) && !opts.NoConvert && !losslessOn {
|
||||
iup.GetHandle("VboxQuality").SetAttribute("ACTIVE", "YES")
|
||||
@@ -122,11 +94,6 @@ func setActive() {
|
||||
iup.GetHandle("Lossless").SetAttribute("ACTIVE", "NO")
|
||||
}
|
||||
|
||||
if jxlLossless {
|
||||
iup.GetHandle("Lossless").SetAttribute("ACTIVE", "NO")
|
||||
iup.GetHandle("VboxEffort").SetAttribute("ACTIVE", "NO")
|
||||
}
|
||||
|
||||
if opts.Width != 0 && opts.Height != 0 && !opts.NoConvert {
|
||||
iup.GetHandle("Fit").SetAttribute("ACTIVE", "YES")
|
||||
} else {
|
||||
|
||||
@@ -25,11 +25,11 @@ func setEffort(format string) {
|
||||
val.SetAttribute("TIP", i18n.Lng(i18n.TipEffortWebp))
|
||||
name = i18n.Str(i18n.EffortMethod)
|
||||
case "avif":
|
||||
val.SetAttributes("MIN=0, MAX=10, SHOWTICKS=11, VALUE=10")
|
||||
val.SetAttributes("MIN=0, MAX=10, SHOWTICKS=11, VALUE=6")
|
||||
val.SetAttribute("TIP", i18n.Lng(i18n.TipEffortAvif))
|
||||
name = i18n.Str(i18n.EffortSpeed)
|
||||
case "jxl":
|
||||
val.SetAttributes("MIN=1, MAX=10, SHOWTICKS=10, VALUE=7")
|
||||
val.SetAttributes("MIN=1, MAX=7, SHOWTICKS=7, VALUE=7")
|
||||
val.SetAttribute("TIP", i18n.Lng(i18n.TipEffortJxl))
|
||||
name = i18n.Str(i18n.EffortEffort)
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user