From d8011a7b74faa9ae5ce6b837fada2c20c8511a3c Mon Sep 17 00:00:00 2001 From: Will Storey Date: Wed, 16 Nov 2016 11:48:19 -0800 Subject: [PATCH 1/4] Add wrapper for AutoOrientImage(). I call the wrapper function AutoOrient(). --- magick.go | 18 +++++++++++++ magick_test.go | 56 ++++++++++++++++++++++++++++++++++++++++- test/heart_rotated.jpg | Bin 0 -> 86538 bytes 3 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 test/heart_rotated.jpg diff --git a/magick.go b/magick.go index 6a5a3b2..a26f820 100644 --- a/magick.go +++ b/magick.go @@ -458,6 +458,24 @@ func (im *MagickImage) Strip() (err error) { return } +// AutoOrient adjusts an image so that its orientation is suitable for +// viewing (i.e. top-left orientation). +func (im *MagickImage) AutoOrient() error { + exception := C.AcquireExceptionInfo() + defer C.DestroyExceptionInfo(exception) + + newImage := C.AutoOrientImage(im.Image, im.Image.orientation, exception) + + failed := C.CheckException(exception) + if failed == C.MagickTrue { + return ErrorFromExceptionInfo(exception) + } + + im.ReplaceImage(newImage) + + return nil +} + // ToBlob takes a (transformed) MagickImage and returns a byte slice in the format you specify with extension. // Magick uses the extension to transform the image in to the proper encoding (e.g. "jpg", "png") func (im *MagickImage) ToBlob(extension string) (blob []byte, err error) { diff --git a/magick_test.go b/magick_test.go index ab11620..0c8ad02 100644 --- a/magick_test.go +++ b/magick_test.go @@ -1,11 +1,12 @@ package magick import ( - "github.com/bmizerany/assert" "io/ioutil" "log" "os" "testing" + + "github.com/bmizerany/assert" ) func setupImage(t *testing.T) (image *MagickImage) { @@ -330,3 +331,56 @@ func TestFullStack(t *testing.T) { assert.T(t, err == nil) } } + +func TestAutoOrientNeedsToRotate(t *testing.T) { + // This file is set so the heart appears to need to be rotated 90 degrees + // clockwise. It has EXIF orientation set to indicate that. + // + // I created it from test/heart_original.png this way: + // convert -rotate 270 heart_original.png heart_rotated.jpg + // exiftool -Orientation=6 -n heart_rotated.jpg + filename := "test/heart_rotated.jpg" + + image, err := NewFromFile(filename) + if err != nil { + t.Errorf("NewFromFile(%s) = %s", filename, err) + return + } + + err = image.AutoOrient() + if err != nil { + _ = image.Destroy() + t.Errorf("AutoOrient() = %s", err) + return + } + + err = image.Destroy() + if err != nil { + t.Errorf("Destroy() = %s", err) + return + } +} + +func TestAutoOrientNoNeedToRotate(t *testing.T) { + // This file does not need to change. + filename := "test/heart_original.png" + + image, err := NewFromFile(filename) + if err != nil { + t.Errorf("NewFromFile(%s) = %s", filename, err) + return + } + + err = image.AutoOrient() + if err != nil { + _ = image.Destroy() + t.Errorf("AutoOrient() = %s", err) + return + } + + err = image.Destroy() + if err != nil { + t.Errorf("Destroy() = %s", err) + return + } +} diff --git a/test/heart_rotated.jpg b/test/heart_rotated.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ae9f16f8c7ed5922df3245e2951f41d9b888d9ff GIT binary patch literal 86538 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 qo3)IP-z#-+jwXOV+z) Date: Mon, 27 Feb 2017 12:11:28 -0800 Subject: [PATCH 2/4] Add PlusRepage() function This emulates the +repage command line argument. This is useful to call after cropping. For more information about this, see http://www.imagemagick.org/script/command-line-options.php#repage and http://www.imagemagick.org/Usage/crop/#crop_page --- magick.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/magick.go b/magick.go index a26f820..89956a8 100644 --- a/magick.go +++ b/magick.go @@ -318,6 +318,28 @@ func (im *MagickImage) SetProperty(prop, value string) (err error) { return } +// PlusRepage runs the same logic as the +repage command line argument. +// +// This removes the virtual canvas metadata. It resets the canvas to match what +// you cropped. +// +// After cropping you may find that the section you cropped is present at the +// location you cropped it at surrounded on all sides by empty space/pixels. +// This apparently occurs when the image format allows positioning sections of +// the image via offsets, such as GIF. +// +// See http://www.imagemagick.org/script/command-line-options.php#repage and +// http://www.imagemagick.org/Usage/crop/#crop_page +// +// The latter says: "Always use "+repage" after any 'crop' like operation. +// Unless you actually need to preserve that info." This means it might be +// useful for Crop() to call this function. +func (im *MagickImage) PlusRepage() { + // +repage is a command line option that has no direct API equivalent. See + // MagickWand/operation.c for the implementation. I copy that here. + C.ParseAbsoluteGeometry(C.CString("0x0+0+0"), &im.Image.page) +} + // ParseGeometryToRectangleInfo converts from a geometry string (WxH+X+Y) into a Magick // RectangleInfo that contains the individual properties func (im *MagickImage) ParseGeometryToRectangleInfo(geometry string) (info C.RectangleInfo, err error) { From 0119c8d2f65546453197b4c5330b7a5739070ff9 Mon Sep 17 00:00:00 2001 From: Will Storey Date: Mon, 27 Feb 2017 12:19:38 -0800 Subject: [PATCH 3/4] Free C String created in PlusRepage() --- magick.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/magick.go b/magick.go index 89956a8..a2be4ed 100644 --- a/magick.go +++ b/magick.go @@ -335,9 +335,12 @@ func (im *MagickImage) SetProperty(prop, value string) (err error) { // Unless you actually need to preserve that info." This means it might be // useful for Crop() to call this function. func (im *MagickImage) PlusRepage() { + geom := C.CString("0x0+0+0") + defer C.free(geom) + // +repage is a command line option that has no direct API equivalent. See // MagickWand/operation.c for the implementation. I copy that here. - C.ParseAbsoluteGeometry(C.CString("0x0+0+0"), &im.Image.page) + C.ParseAbsoluteGeometry(geom, &im.Image.page) } // ParseGeometryToRectangleInfo converts from a geometry string (WxH+X+Y) into a Magick From 08e6a20cd0411ec6aae48cb686110b82f28ee9ff Mon Sep 17 00:00:00 2001 From: Will Storey Date: Tue, 28 Feb 2017 09:48:30 -0800 Subject: [PATCH 4/4] Fix incorrect use of C.free() Also add a test demonstrating PlusRepage(). To do this I add functions to access the virtual canvas information. --- magick.go | 18 +++++++++++- magick_test.go | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 1 deletion(-) diff --git a/magick.go b/magick.go index a2be4ed..030059f 100644 --- a/magick.go +++ b/magick.go @@ -283,6 +283,22 @@ func (im *MagickImage) Height() int { return (int)(im.Image.rows) } +// VirtualCanvasWidth returns the virtual canvas width. +// +// This can be different than the image's width for certain formats, such as +// GIF. See PlusRepage() for more information. +func (im *MagickImage) VirtualCanvasWidth() int { + return (int)(im.Image.page.width) +} + +// VirtualCanvasHeight returns the virtual canvas height. +// +// This can be different than the image's height for certain formats, such as +// GIF. See PlusRepage() for more information. +func (im *MagickImage) VirtualCanvasHeight() int { + return (int)(im.Image.page.height) +} + // Type returns the underlying encoding or "magick" of the image as a string func (im *MagickImage) Type() (t string) { return strings.Trim(string(C.GoBytes(unsafe.Pointer(&im.Image.magick), 4096)), "\x00") @@ -336,7 +352,7 @@ func (im *MagickImage) SetProperty(prop, value string) (err error) { // useful for Crop() to call this function. func (im *MagickImage) PlusRepage() { geom := C.CString("0x0+0+0") - defer C.free(geom) + defer C.free(unsafe.Pointer(geom)) // +repage is a command line option that has no direct API equivalent. See // MagickWand/operation.c for the implementation. I copy that here. diff --git a/magick_test.go b/magick_test.go index 0c8ad02..fff87be 100644 --- a/magick_test.go +++ b/magick_test.go @@ -1,6 +1,7 @@ package magick import ( + "fmt" "io/ioutil" "log" "os" @@ -171,6 +172,82 @@ func TestCrop(t *testing.T) { assert.T(t, err != nil) } +// The use case for +repage is that we need to reset an image's canvas so only +// the cropped portion is present. Cropping and not using +repage leaves the +// canvas the same size, but with only the cropped portion's pixels remaining. +// I believe this is only the case for certain image formats such as GIF and +// PNG. +// +// Test to demonstrate the problem and show how PlusRepage() solves it. +func TestPlusRepage(t *testing.T) { + filename := "test/heart_original.png" + image, err := NewFromFile(filename) + if err != nil { + t.Errorf("NewFromFile(%s) error = %s", filename, err) + return + } + + origWidth := image.Width() + origHeight := image.Height() + origVirtualCanvasWidth := image.VirtualCanvasWidth() + origVirtualCanvasHeight := image.VirtualCanvasHeight() + + wantedWidth := 100 + wantedHeight := 100 + geom := fmt.Sprintf("%dx%d!+10+10", wantedWidth, wantedHeight) + if err := image.Crop(geom); err != nil { + t.Errorf("image.Crop(%s) error = %s", geom, err) + _ = image.Destroy() + return + } + + if image.Width() != wantedWidth || image.Height() != wantedHeight { + t.Errorf("image width x height after cropping is %dx%d, wanted %dx%d", + image.Width(), image.Height(), origWidth, origHeight) + _ = image.Destroy() + return + } + + // The virtual canvas width x height should currently be as it was. The + // cropped region will be surrounded by empty space if we save it now. + if image.VirtualCanvasWidth() != origVirtualCanvasWidth || + image.VirtualCanvasHeight() != origVirtualCanvasHeight { + t.Errorf("virtual canvas width x height after cropping is %dx%d, wanted %dx%d", + image.VirtualCanvasWidth(), image.VirtualCanvasHeight(), + origVirtualCanvasWidth, origVirtualCanvasHeight) + _ = image.Destroy() + return + } + + // Reset the virtual canvas using +repage. This removes virtual canvas + // information. The effect of removing it means the image, once saved, will + // have the dimensions of the image region we cropped. + image.PlusRepage() + + // Check both sets of dimensions again. The image size should still be the + // same. The virtual canvas size should be 0x0 since we removed information + // about it. + + if image.Width() != wantedWidth || image.Height() != wantedHeight { + t.Errorf("image width x height after cropping is %dx%d, wanted %dx%d", + image.Width(), image.Height(), origWidth, origHeight) + _ = image.Destroy() + return + } + + if image.VirtualCanvasWidth() != 0 || image.VirtualCanvasHeight() != 0 { + t.Errorf("virtual canvas width x height after +repage is %dx%d, wanted %dx%d", + image.VirtualCanvasWidth(), image.VirtualCanvasHeight(), 0, 0) + _ = image.Destroy() + return + } + + if err := image.Destroy(); err != nil { + t.Errorf("image.Destroy() error = %s", err) + return + } +} + func TestShadow(t *testing.T) { image := setupImage(t) err := image.Shadow("#000", 75, 2, 0, 0)