star/image/bild/adjust.go
2025-06-13 13:05:50 +08:00

135 lines
3.0 KiB
Go

package bilds
import (
"image"
"github.com/anthonynsimon/bild/adjust"
"github.com/spf13/cobra"
)
func brightness() *cobra.Command {
var change float64
var cmd = &cobra.Command{
Use: "brightness",
Short: "调整图像的相对亮度",
Args: cobra.ExactArgs(2),
Example: "brightness --change 0.5 input.jpg output.jpg",
Run: func(cmd *cobra.Command, args []string) {
fin := args[0]
fout := args[1]
apply(fin, fout, func(img image.Image) (image.Image, error) {
return adjust.Brightness(img, change), nil
})
}}
cmd.Flags().Float64VarP(&change, "change", "c", 0, "adjust change")
return cmd
}
func contrast() *cobra.Command {
var change float64
var cmd = &cobra.Command{
Use: "contrast",
Short: "调整图像的相对对比度",
Args: cobra.ExactArgs(2),
Example: "contrast --change 0.5 input.jpg output.jpg",
Run: func(cmd *cobra.Command, args []string) {
fin := args[0]
fout := args[1]
apply(fin, fout, func(img image.Image) (image.Image, error) {
return adjust.Contrast(img, change), nil
})
}}
cmd.Flags().Float64VarP(&change, "change", "c", 0, "adjust change")
return cmd
}
func gamma() *cobra.Command {
var change float64
var cmd = &cobra.Command{
Use: "gamma",
Short: "adjust the gamma of an image",
Args: cobra.ExactArgs(2),
Example: "gamma --gamma 1.1 input.jpg output.jpg",
Run: func(cmd *cobra.Command, args []string) {
fin := args[0]
fout := args[1]
apply(fin, fout, func(img image.Image) (image.Image, error) {
return adjust.Gamma(img, change), nil
})
}}
cmd.Flags().Float64VarP(&change, "gamma", "g", 0, "set the gamma of the image")
return cmd
}
func hue() *cobra.Command {
var change int
var cmd = &cobra.Command{
Use: "hue",
Short: "adjust the hue of an image",
Args: cobra.ExactArgs(2),
Example: "hue --change 170 input.jpg output.jpg",
Run: func(cmd *cobra.Command, args []string) {
fin := args[0]
fout := args[1]
apply(fin, fout, func(img image.Image) (image.Image, error) {
return adjust.Hue(img, change), nil
})
}}
cmd.Flags().IntVarP(&change, "change", "c", 0, "adjust change")
return cmd
}
func saturation() *cobra.Command {
var change float64
var cmd = &cobra.Command{
Use: "saturation",
Short: "adjust the saturation of an image",
Args: cobra.ExactArgs(2),
Example: "saturation --change 170 input.jpg output.jpg",
Run: func(cmd *cobra.Command, args []string) {
fin := args[0]
fout := args[1]
apply(fin, fout, func(img image.Image) (image.Image, error) {
return adjust.Saturation(img, change), nil
})
}}
cmd.Flags().Float64VarP(&change, "change", "c", 0, "adjust change")
return cmd
}
func createAdjust() *cobra.Command {
adjustCmd := &cobra.Command{
Use: "adjust",
Short: "adjust basic image features like brightness or contrast",
}
adjustCmd.AddCommand(brightness())
adjustCmd.AddCommand(contrast())
adjustCmd.AddCommand(gamma())
adjustCmd.AddCommand(hue())
adjustCmd.AddCommand(saturation())
return adjustCmd
}