diff src/IMGmanip.go @ 6:9072560fc0f2

IMGmanip: new dump option.
author pyon@macmini
date Thu, 27 Oct 2016 20:42:11 +0900
parents de451fa0c9cd
children
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
+}
+