func (ip *imageProcessor) scaleWand(wand *imagick.MagickWand, request *ImageProcessorOptions) (err error, modified bool) { currentDimensions := ImageDimensions{uint64(wand.GetImageWidth()), uint64(wand.GetImageHeight())} newDimensions := ip.getScaledDimensions(currentDimensions, request) if newDimensions == currentDimensions { return nil, false } if err = wand.ResizeImage(uint(newDimensions.Width), uint(newDimensions.Height), imagick.FILTER_LANCZOS, 1); err != nil { ip.Logger.Warn("ImageMagick error resizing image: %s", err) return err, true } if err = wand.SetImageInterpolateMethod(imagick.INTERPOLATE_PIXEL_BICUBIC); err != nil { ip.Logger.Warn("ImageMagick error setting interpoliation method: %s", err) return err, true } if err = wand.StripImage(); err != nil { ip.Logger.Warn("ImageMagick error stripping image routes and metadata") return err, true } if "JPEG" == wand.GetImageFormat() { if err = wand.SetImageInterlaceScheme(imagick.INTERLACE_PLANE); err != nil { ip.Logger.Warn("ImageMagick error setting the image interlace scheme") return err, true } if err = wand.SetImageCompression(imagick.COMPRESSION_JPEG); err != nil { ip.Logger.Warn("ImageMagick error setting the image compression type") return err, true } if err = wand.SetImageCompressionQuality(uint(ip.Config.ImageCompressionQuality)); err != nil { ip.Logger.Warn("sImageMagick error setting compression quality: %s", err) return err, true } } return nil, true }