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!

Figure 6: With a suitable threshold value, the algorithm performs the task as expected.

The Author

Mike Schilli works as a software engineer in the San Francisco Bay area, California. Each month in his column, which has been running since 1997, he researches practical applications of various programming languages. If you email him at mailto:mschilli@perlmeister.com he will gladly answer any questions.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Straight to the Point

    With the Fyne framework, Go offers an easy-to-use graphical interface for all popular platforms. As a sample application, Mike uses an algorithm to draw arrows onto images.

  • CLI Image Processing

    Powerful command-line tools offer fast and easy image editing.

  • SunnySide Up

    Cell phones often store photos upside down or sideways for efficiency reasons and record the fact in the Exif metadata. However, not all apps can handle this. Mike Schilli turns to Go to make the process foolproof.

  • Data Conversion

    Transcode is a handy tool for manipulating video files at the command line. With its modular architecture, the Transcode utility gives users much more than simple format conversion.

  • Perl: Automating Color Correction

    If you have grown tired of manually correcting color-casted images (as described in last month's Perl column), you might appreciate a script that automates this procedure.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More

News