|
//-------------------------------------------------------------------------
// 画像ファイルのテキスト化
//-------------------------------------------------------------------------
package main
//-------------------------------------------------------------------------
import (
"fmt"
"image"
_ "image/gif"
_ "image/jpeg"
_ "image/png"
"os"
"strings"
"time"
)
//-------------------------------------------------------------------------
// メイン
//-------------------------------------------------------------------------
func main() {
start := time.Now()
fn := "test.png"
fp, er := os.Open(fn)
if er != nil {
fmt.Println("error:It isn't ", fn)
return
}
defer fp.Close()
//画像ファイルを取得
img, fm, err := image.Decode(fp)
if err != nil {
fmt.Println(err)
return
}
//フォーマット名表示
fmt.Println("画像フォーマット:" , fm)
//サイズ表示
rc := img.Bounds()
fmt.Println("横幅=", rc.Max.X, " 縦幅=", rc.Max.Y)
//画像をテキストファイル化
Txt(img, Ecng(fn, ".txt"))
end := time.Now()
fmt.Println("time: ", end.Sub(start))
}
//-------------------------------------------------------------------------
// テキストファイル作成
//-------------------------------------------------------------------------
func Txt(img image.Image, fn string) int {
fp, er := os.Create(fn)
if er != nil {
fmt.Println("error:It isn't ", fn)
return -1
}
rc := img.Bounds()
for y := 0; y < rc.Max.Y; y++ {
iw := make([]int, rc.Max.X)
for x := 0; x < rc.Max.X; x++ {
r, g, b, _ := img.At(x, y).RGBA()
if r+g+b == 0 {
iw[x] = 1
}
}
var sw string
for _, v := range iw {
if v == 1 {
sw += "*"
} else {
sw += " "
}
}
sw += "\n"
_, er := fp.Write([]byte(sw))
if er != nil {
fmt.Println("error:can't write ", fn)
return -1
}
}
fp.Close()
fmt.Println("File:", fn)
return 0
}
//-----------------------------------------------------------------
// ファイル名 拡張子の変更
//-----------------------------------------------------------------
func Ecng(fn string, ex string) string {
ps := strings.LastIndex(fn, ".")
fw := fn[0:ps] + ex
return fw
}
//-------------------------------------------------------------------------
|
|
|