Mercurial > mercurial > hgweb_golang.cgi
comparison src/IMGmanip.go @ 6:9072560fc0f2
IMGmanip: new dump option.
author | pyon@macmini |
---|---|
date | Thu, 27 Oct 2016 20:42:11 +0900 |
parents | de451fa0c9cd |
children |
comparison
equal
deleted
inserted
replaced
5:e4066309b04f | 6:9072560fc0f2 |
---|---|
1 /* Image Manipulator - ver 0.2 ( Last Change: 2016-08-21 Sun 09:51:52.) */ | 1 /* Image Manipulator - ver 0.3 ( Last Change: 2016-10-27 Thu 20:38:25.) */ |
2 package main | 2 package main |
3 | 3 |
4 import( | 4 import( |
5 "errors" | 5 "errors" |
6 "flag" | 6 "flag" |
13 "strings" | 13 "strings" |
14 "strconv" | 14 "strconv" |
15 ) | 15 ) |
16 | 16 |
17 func main() { | 17 func main() { |
18 ver := "0.2" | 18 ver := "0.3" |
19 | 19 |
20 // arguments | 20 // arguments |
21 kind := flag.String( "t", "", "file type : jpeg / png" ) | 21 kind := flag.String( "t", "", "file type : jpeg / png" ) |
22 resize := flag.String( "s", "", "new size : 600x800 / 320x0 / ..." ) | 22 resize := flag.String( "s", "", "new size : 600x800 / 320x0 / ..." ) |
23 crop := flag.String( "c", "", "crop size : 300x200+10+35" ) | 23 crop := flag.String( "c", "", "crop size : 300x200+10+35" ) |
24 angle := flag.Uint( "r", 0, "rotate : 90 / 180 / 270" ) | 24 angle := flag.Uint( "r", 0, "rotate : 90 / 180 / 270" ) |
25 dump := flag.Bool( "d", false, "dump RGBA : [no argument]") | |
25 | 26 |
26 flag.Parse() | 27 flag.Parse() |
27 if flag.NFlag() == 0 { | 28 if flag.NFlag() == 0 { |
28 fmt.Fprintf( os.Stderr, "\n=== Image-Manipulator - version %s ===", ver ) | 29 fmt.Fprintf( os.Stderr, "\n=== Image-Manipulator - version %s ===", ver ) |
29 fmt.Fprintf( os.Stderr, "\n$ imgmanip [option parameter] < infile > outfile\n" ) | 30 fmt.Fprintf( os.Stderr, "\n$ imgmanip [option parameter] < infile > outfile\n" ) |
30 flag.PrintDefaults() | 31 flag.PrintDefaults() |
31 os.Exit( 1 ) | 32 os.Exit( 1 ) |
32 } | 33 } |
33 | 34 |
34 // convert | 35 switch { |
35 if *kind != "" { | 36 // convert |
36 err := Convert( os.Stdin, os.Stdout, *kind ); if err != nil { | 37 case *kind != "" : |
37 fmt.Fprintf( os.Stderr, "%s: %v\n", *kind, err ) | 38 err := Convert( os.Stdin, os.Stdout, *kind ); if err != nil { |
38 os.Exit( 1 ) | 39 fmt.Fprintf( os.Stderr, "%s: %v\n", *kind, err ) |
39 } | 40 os.Exit( 1 ) |
40 return | 41 } |
41 } | 42 |
42 | 43 // resize |
43 // resize | 44 case *resize != "" : |
44 if *resize != "" { | 45 err := Resize( os.Stdin, os.Stdout, *resize ); if err != nil { |
45 err := Resize( os.Stdin, os.Stdout, *resize ); if err != nil { | 46 fmt.Fprintf( os.Stderr, "resize: %v\n", err ) |
46 fmt.Fprintf( os.Stderr, "resize: %v\n", err ) | 47 os.Exit( 1 ) |
47 os.Exit( 1 ) | 48 } |
48 } | 49 |
49 return | 50 // crop |
50 } | 51 case *crop != "" : |
51 | 52 err := Crop( os.Stdin, os.Stdout, *crop ); if err != nil { |
52 // crop | 53 fmt.Fprintf( os.Stderr, "crop: %v\n", err ) |
53 if *crop != "" { | 54 os.Exit( 1 ) |
54 err := Crop( os.Stdin, os.Stdout, *crop ); if err != nil { | 55 } |
55 fmt.Fprintf( os.Stderr, "crop: %v\n", err ) | 56 |
56 os.Exit( 1 ) | 57 // rotate |
57 } | 58 case *angle != 0 : |
58 return | 59 err := Rotate( os.Stdin, os.Stdout, *angle ); if err != nil { |
59 } | 60 fmt.Fprintf( os.Stderr, "rotate: %v\n", err ) |
60 | 61 os.Exit( 1 ) |
61 // rotate | 62 } |
62 if *angle != 0 { | 63 |
63 err := Rotate( os.Stdin, os.Stdout, *angle ); if err != nil { | 64 // dump |
64 fmt.Fprintf( os.Stderr, "rotate: %v\n", err ) | 65 case *dump : |
65 os.Exit( 1 ) | 66 err := Dump( os.Stdin ); if err != nil { |
66 } | 67 fmt.Fprintf( os.Stderr, "dump: %v\n", err ) |
67 return | 68 os.Exit( 1 ) |
68 } | 69 } |
70 | |
71 | |
72 } | |
69 } | 73 } |
70 | 74 |
71 func Convert( in io.Reader, out io.Writer, kind string ) error { | 75 func Convert( in io.Reader, out io.Writer, kind string ) error { |
72 | 76 |
73 img, _, err := image.Decode( in ); if err != nil { | 77 img, _, err := image.Decode( in ); if err != nil { |
211 } | 215 } |
212 | 216 |
213 return errors.New( "image-type is not supported") | 217 return errors.New( "image-type is not supported") |
214 } | 218 } |
215 | 219 |
220 func Dump( in io.Reader ) error { | |
221 img, _, err := image.Decode( in ); if err != nil { | |
222 return err | |
223 } | |
224 | |
225 bounds := img.Bounds() | |
226 for y:= bounds.Min.Y; y < bounds.Max.Y; y++ { | |
227 for x:= bounds.Min.X; x < bounds.Max.X; x++ { | |
228 r, g, b, a := img.At( x, y ).RGBA() | |
229 fmt.Printf( "(%d,%d) = %d,%d,%d,%d\n", x, y, r>>8, g>>8, b>>8, a>>8 ) | |
230 } | |
231 } | |
232 return nil | |
233 } | |
234 |