Image processing with Go
All New
To compile the helper library in Listing 1, which is later needed by the main program in Listing 2, move it to the directory src/darkenthreshold
under your Go path (usually ~/go
) and run go install
there.
To compile the main program, call go build thresmain.go
, and the resulting binary thresmain
will be writing any modified image file (e.g., portrait.jpg
) to a new file with a name sporting an -s
suffix, as in portrait-s.jpg
. To rewrite the filename, Line 60 in Listing 2 extracts the .jpg
extension from the name of the old file and then chops it off with TrimSuffix
, before the Sprintf
function then inserts a -s
from the fmt
package and puts the suffix back. The target file won't exist yet at this point, so the OpenFile()
function in line 66 needs the read/write/create flags (os.O_RDWR
and os.O_CREATE
) to create a new file.
With jpeg.Encode()
and a quality value of 80
, Listing 2 encodes the modified data into JPG format and writes the result to the specified file (Figure 6). If you like, you can try other algorithms, such as the Flood Fill [3] method, which colorizes pixels that are similar in value. After all, the raw pixel data is at your fingertips, and there are no limits as to what you can accomplish with them!
Infos
- Listings for this article: ftp://ftp.linux-magazine.com/pub/listings/linux-magazine.com/221/
- The Go image/draw package: https://blog.golang.org/go-imagedraw-package
- Flood Fill: https://en.wikipedia.org/wiki/Flood_fill
« Previous 1 2
Buy this article as PDF
(incl. VAT)