@@ 0,0 1,47 @@
+// The convert package convert a image to ascii string or matrix
+package convert
+
+import (
+ "bytes"
+ "github.com/qeesung/image2asicc/ascii"
+ "github.com/qeesung/image2asicc/resize"
+ "image"
+ "image/color"
+)
+
+type Options struct {
+ Ratio float64
+}
+
+// Convert a image to ascii matrix
+func Image2ASCIIMatrix(image image.Image, options *Options) []string {
+ // Resize the convert first
+ newImage := resize.ScaleImage(image, options.Ratio)
+ sz := newImage.Bounds()
+ newWidth := sz.Max.Y
+ newHeight := sz.Max.X
+ rawCharValues := make([]string, int(newWidth*newHeight))
+ for i := 0; i < int(newWidth); i++ {
+ for j := 0; j < int(newHeight); j++ {
+ pixel := color.NRGBAModel.Convert(newImage.At(j, i))
+ // Convert the pixel to ascii char
+ pixelConvertOptions := ascii.NewOptions()
+ rawChar := ascii.ConvertPixelToASCII(pixel, &pixelConvertOptions)
+ rawCharValues = append(rawCharValues, rawChar)
+ }
+ rawCharValues = append(rawCharValues, "\n")
+ }
+ return rawCharValues
+}
+
+// Convert a image to ascii matrix, then concat the matrix value
+// to a long string for easy display
+func Image2ASCIIString(image image.Image, options *Options) string {
+ convertedPixelASCII := Image2ASCIIMatrix(image, options)
+ var buffer bytes.Buffer
+
+ for i := 0; i < len(convertedPixelASCII); i++ {
+ buffer.WriteString(convertedPixelASCII[i])
+ }
+ return buffer.String()
+}