How to open and decode an image file (e.g., JPEG, PNG) in Go?

To open and decode an image file in Go, you can use the built-in image and image/jpeg (or image/png) packages. Here's an example of how to do it:

package main import ( "fmt" "image" "image/jpeg" _ "image/png" // Import to support decoding PNG files "log" "os" ) func main() { // Open the image file imageFile, err := os.Open("path/to/image.jpg") if err != nil { log.Fatal(err) } defer imageFile.Close() // Decode the image file img, _, err := image.Decode(imageFile) if err != nil { log.Fatal(err) } // Access information about the image bounds := img.Bounds() width, height := bounds.Max.X, bounds.Max.Y fmt.Println("Image width:", width) fmt.Println("Image height:", height) // You can now perform operations on the image like resizing, cropping, etc. // For example, you can resize the image to a specific width and height: newWidth := 500 newHeight := 500 resizedImage := resizeImage(img, newWidth, newHeight) // Save the resized image outputFile, err := os.Create("path/to/resized_image.jpg") if err != nil { log.Fatal(err) } defer outputFile.Close() // Encode the resized image and write to the output file err = jpeg.Encode(outputFile, resizedImage, nil) if err != nil { log.Fatal(err) } fmt.Println("Resized image saved successfully!") } // Example resize function using the "graphics-go" library: // You need to install the library using "go get github.com/disintegration/imaging" command. // Here, we're using the imaging library to resize the image. // Refer to the library documentation for more details on image operations. func resizeImage(img image.Image, width, height int) image.Image { resizedImg := imaging.Resize(img, width, height, imaging.Lanczos) return resizedImg }

In this example, we first open the image file using os.Open(), then decode it using image.Decode(). After that, you can access information about the image (e.g., width, height) or perform operations on it. We also include an example function resizeImage() that uses the imaging library to resize the image. Finally, we save the resized image using jpeg.Encode().