Documentation ¶
Overview ¶
Package imageorient provides image decoding functions similar to standard library's image.Decode and image.DecodeConfig with the addition that they also handle the EXIF orientation tag (if present).
See also: http://www.daveperrett.com/articles/2012/07/28/exif-orientation-handling-is-a-ghetto/
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Decode ¶
Decode decodes an image and changes its orientation according to the EXIF orientation tag (if present).
Example ¶
package main import ( "image/jpeg" "log" "os" "github.com/disintegration/imageorient" ) func main() { // Open the test image. This particular image has the EXIF // orientation tag set to 3 (rotated by 180 deg). f, err := os.Open("testdata/orientation_3.jpg") if err != nil { log.Fatalf("os.Open failed: %v", err) } // Decode the test image using the imageorient.Decode function // to handle the image orientation correctly. img, _, err := imageorient.Decode(f) if err != nil { log.Fatalf("imageorient.Decode failed: %v", err) } // Save the decoded image to a new file. If we used image.Decode // instead of imageorient.Decode on the previous step, the saved // image would appear rotated. f, err = os.Create("testdata/example_output.jpg") if err != nil { log.Fatalf("os.Create failed: %v", err) } err = jpeg.Encode(f, img, nil) if err != nil { log.Fatalf("jpeg.Encode failed: %v", err) } }
Output:
func DecodeConfig ¶
DecodeConfig decodes the color model and dimensions of an image with the respect to the EXIF orientation tag (if present).
Note that after using imageorient.Decode on the same image, the color model of the decoded image may be different if the orientation-related transformation is needed.
Types ¶
This section is empty.