Mercurial > mercurial > hgweb_golang.cgi
changeset 6:9072560fc0f2
IMGmanip: new dump option.
author | pyon@macmini |
---|---|
date | Thu, 27 Oct 2016 20:42:11 +0900 |
parents | e4066309b04f |
children | f4ba4cfb09fd |
files | src/IMGmanip.go |
diffstat | 1 files changed, 53 insertions(+), 34 deletions(-) [+] |
line wrap: on
line diff
--- a/src/IMGmanip.go Sun Oct 23 14:00:39 2016 +0900 +++ b/src/IMGmanip.go Thu Oct 27 20:42:11 2016 +0900 @@ -1,4 +1,4 @@ -/* Image Manipulator - ver 0.2 ( Last Change: 2016-08-21 Sun 09:51:52.) */ +/* Image Manipulator - ver 0.3 ( Last Change: 2016-10-27 Thu 20:38:25.) */ package main import( @@ -15,13 +15,14 @@ ) func main() { - ver := "0.2" + ver := "0.3" // arguments kind := flag.String( "t", "", "file type : jpeg / png" ) resize := flag.String( "s", "", "new size : 600x800 / 320x0 / ..." ) crop := flag.String( "c", "", "crop size : 300x200+10+35" ) angle := flag.Uint( "r", 0, "rotate : 90 / 180 / 270" ) + dump := flag.Bool( "d", false, "dump RGBA : [no argument]") flag.Parse() if flag.NFlag() == 0 { @@ -31,41 +32,44 @@ os.Exit( 1 ) } - // convert - if *kind != "" { - err := Convert( os.Stdin, os.Stdout, *kind ); if err != nil { - fmt.Fprintf( os.Stderr, "%s: %v\n", *kind, err ) - os.Exit( 1 ) - } - return - } + switch { + // convert + case *kind != "" : + err := Convert( os.Stdin, os.Stdout, *kind ); if err != nil { + fmt.Fprintf( os.Stderr, "%s: %v\n", *kind, err ) + os.Exit( 1 ) + } - // resize - if *resize != "" { - err := Resize( os.Stdin, os.Stdout, *resize ); if err != nil { - fmt.Fprintf( os.Stderr, "resize: %v\n", err ) - os.Exit( 1 ) - } - return - } + // resize + case *resize != "" : + err := Resize( os.Stdin, os.Stdout, *resize ); if err != nil { + fmt.Fprintf( os.Stderr, "resize: %v\n", err ) + os.Exit( 1 ) + } - // crop - if *crop != "" { - err := Crop( os.Stdin, os.Stdout, *crop ); if err != nil { - fmt.Fprintf( os.Stderr, "crop: %v\n", err ) - os.Exit( 1 ) - } - return - } + // crop + case *crop != "" : + err := Crop( os.Stdin, os.Stdout, *crop ); if err != nil { + fmt.Fprintf( os.Stderr, "crop: %v\n", err ) + os.Exit( 1 ) + } - // rotate - if *angle != 0 { - err := Rotate( os.Stdin, os.Stdout, *angle ); if err != nil { - fmt.Fprintf( os.Stderr, "rotate: %v\n", err ) - os.Exit( 1 ) - } - return - } + // rotate + case *angle != 0 : + err := Rotate( os.Stdin, os.Stdout, *angle ); if err != nil { + fmt.Fprintf( os.Stderr, "rotate: %v\n", err ) + os.Exit( 1 ) + } + + // dump + case *dump : + err := Dump( os.Stdin ); if err != nil { + fmt.Fprintf( os.Stderr, "dump: %v\n", err ) + os.Exit( 1 ) + } + + + } } func Convert( in io.Reader, out io.Writer, kind string ) error { @@ -213,3 +217,18 @@ return errors.New( "image-type is not supported") } +func Dump( in io.Reader ) error { + img, _, err := image.Decode( in ); if err != nil { + return err + } + + bounds := img.Bounds() + for y:= bounds.Min.Y; y < bounds.Max.Y; y++ { + for x:= bounds.Min.X; x < bounds.Max.X; x++ { + r, g, b, a := img.At( x, y ).RGBA() + fmt.Printf( "(%d,%d) = %d,%d,%d,%d\n", x, y, r>>8, g>>8, b>>8, a>>8 ) + } + } + return nil +} +