Skip to content

Instantly share code, notes, and snippets.

@wreulicke
Created May 25, 2020 16:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wreulicke/680f7e6fd0631722237ce1bf5b0c1945 to your computer and use it in GitHub Desktop.
Save wreulicke/680f7e6fd0631722237ce1bf5b0c1945 to your computer and use it in GitHub Desktop.
package main
import (
"log"
"gopkg.in/gographics/imagick.v2/imagick"
)
func mainInternal() error {
pdfName := "test.pdf"
imageName := "test.jpg"
imagick.Initialize()
defer imagick.Terminate()
mw := imagick.NewMagickWand()
defer mw.Destroy()
// Must be *before* ReadImageFile
// Make sure our image is high quality
if err := mw.SetResolution(300, 300); err != nil {
return err
}
// Load the image file into imagick
if err := mw.ReadImage(pdfName); err != nil {
return err
}
// Must be *after* ReadImageFile
// Flatten image and remove alpha channel, to prevent alpha turning black in jpg
if err := mw.SetImageAlphaChannel(imagick.ALPHA_CHANNEL_FLATTEN); err != nil {
return err
}
// Set any compression (100 = max quality)
if err := mw.SetCompressionQuality(95); err != nil {
return err
}
// Select only first page of pdf
mw.SetIteratorIndex(0)
w := mw.GetImageWidth()
h := mw.GetImageHeight()
if err := mw.ThumbnailImage(700, h*700/w); err != nil {
return err
}
err := mw.CropImage(700, 700, 0, 0)
if err != nil {
return err
}
// Convert into JPG
if err := mw.SetFormat("jpg"); err != nil {
return err
}
// Save File
return mw.WriteImage(imageName)
}
func main() {
if err := mainInternal(); err != nil {
log.Fatal(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment