mirror of
https://github.com/coalaura/ffwebp.git
synced 2025-09-07 21:45:31 +00:00
input-only codecs
This commit is contained in:
@@ -15,7 +15,6 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
quality int
|
||||
qualityA int
|
||||
speed int
|
||||
chroma int
|
||||
@@ -35,6 +34,10 @@ func (impl) Extensions() []string {
|
||||
return []string{"avif"}
|
||||
}
|
||||
|
||||
func (impl) CanEncode() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (impl) Flags(flags []cli.Flag) []cli.Flag {
|
||||
return append(flags,
|
||||
&cli.IntFlag{
|
||||
|
@@ -26,6 +26,10 @@ func (impl) Extensions() []string {
|
||||
return []string{"bmp"}
|
||||
}
|
||||
|
||||
func (impl) CanEncode() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (impl) Flags(flags []cli.Flag) []cli.Flag {
|
||||
return flags
|
||||
}
|
||||
|
@@ -14,6 +14,8 @@ type Codec interface {
|
||||
Flags([]cli.Flag) []cli.Flag
|
||||
Extensions() []string
|
||||
|
||||
CanEncode() bool
|
||||
|
||||
Sniff(io.ReaderAt) (int, []byte, error)
|
||||
Decode(io.Reader) (image.Image, error)
|
||||
Encode(io.Writer, image.Image, opts.Common) error
|
||||
|
@@ -78,6 +78,10 @@ func Detect(output, override string) (Codec, error) {
|
||||
return nil, fmt.Errorf("unsupported output codec: %q", override)
|
||||
}
|
||||
|
||||
if !codec.CanEncode() {
|
||||
return nil, fmt.Errorf("decode-only output codec: %q", override)
|
||||
}
|
||||
|
||||
return codec, nil
|
||||
}
|
||||
|
||||
@@ -93,6 +97,10 @@ func Detect(output, override string) (Codec, error) {
|
||||
for _, codec := range codecs {
|
||||
for _, alias := range codec.Extensions() {
|
||||
if ext == strings.ToLower(alias) {
|
||||
if !codec.CanEncode() {
|
||||
return nil, fmt.Errorf("decode-only output codec: %q", override)
|
||||
}
|
||||
|
||||
return codec, nil
|
||||
}
|
||||
}
|
||||
|
@@ -29,6 +29,10 @@ func (impl) Extensions() []string {
|
||||
return []string{"gif"}
|
||||
}
|
||||
|
||||
func (impl) CanEncode() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (impl) Flags(flags []cli.Flag) []cli.Flag {
|
||||
return append(flags, &cli.IntFlag{
|
||||
Name: "gif.colors",
|
||||
|
@@ -30,6 +30,10 @@ func (impl) Flags(flags []cli.Flag) []cli.Flag {
|
||||
return flags
|
||||
}
|
||||
|
||||
func (impl) CanEncode() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (impl) Sniff(reader io.ReaderAt) (int, []byte, error) {
|
||||
magicICO := []byte{0x00, 0x00, 0x01, 0x00}
|
||||
magicCUR := []byte{0x00, 0x00, 0x02, 0x00}
|
||||
|
@@ -30,6 +30,10 @@ func (impl) Flags(flags []cli.Flag) []cli.Flag {
|
||||
return flags
|
||||
}
|
||||
|
||||
func (impl) CanEncode() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (impl) Sniff(reader io.ReaderAt) (int, []byte, error) {
|
||||
magic := []byte{0xFF, 0xD8, 0xFF}
|
||||
|
||||
|
@@ -32,6 +32,10 @@ func (impl) Extensions() []string {
|
||||
return []string{"jxl"}
|
||||
}
|
||||
|
||||
func (impl) CanEncode() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (impl) Flags(flags []cli.Flag) []cli.Flag {
|
||||
return append(flags,
|
||||
&cli.IntFlag{
|
||||
|
@@ -31,6 +31,10 @@ func (impl) Extensions() []string {
|
||||
return []string{"png"}
|
||||
}
|
||||
|
||||
func (impl) CanEncode() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (impl) Flags(flags []cli.Flag) []cli.Flag {
|
||||
return append(flags, &cli.IntFlag{
|
||||
Name: "png.compression",
|
||||
|
@@ -33,6 +33,10 @@ func (impl) Extensions() []string {
|
||||
return []string{"tiff", "tif"}
|
||||
}
|
||||
|
||||
func (impl) CanEncode() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (impl) Flags(flags []cli.Flag) []cli.Flag {
|
||||
return append(flags,
|
||||
&cli.IntFlag{
|
||||
|
@@ -33,6 +33,10 @@ func (impl) Extensions() []string {
|
||||
return []string{"webp"}
|
||||
}
|
||||
|
||||
func (impl) CanEncode() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (impl) Flags(flags []cli.Flag) []cli.Flag {
|
||||
return append(flags,
|
||||
&cli.IntFlag{
|
||||
|
Reference in New Issue
Block a user