diff --git a/fixtures/exif/Landscape_1_out.jpg b/fixtures/exif/Landscape_1_out.jpg index dce95e3..033589e 100644 Binary files a/fixtures/exif/Landscape_1_out.jpg and b/fixtures/exif/Landscape_1_out.jpg differ diff --git a/fixtures/exif/Landscape_2_out.jpg b/fixtures/exif/Landscape_2_out.jpg index c68364e..1b2259f 100644 Binary files a/fixtures/exif/Landscape_2_out.jpg and b/fixtures/exif/Landscape_2_out.jpg differ diff --git a/fixtures/exif/Landscape_3_out.jpg b/fixtures/exif/Landscape_3_out.jpg index 3032ba8..681964a 100644 Binary files a/fixtures/exif/Landscape_3_out.jpg and b/fixtures/exif/Landscape_3_out.jpg differ diff --git a/fixtures/exif/Landscape_4_out.jpg b/fixtures/exif/Landscape_4_out.jpg index cf7fa3a..fee30ea 100644 Binary files a/fixtures/exif/Landscape_4_out.jpg and b/fixtures/exif/Landscape_4_out.jpg differ diff --git a/fixtures/exif/Landscape_5_out.jpg b/fixtures/exif/Landscape_5_out.jpg index 8cbfb74..fbd8f5b 100644 Binary files a/fixtures/exif/Landscape_5_out.jpg and b/fixtures/exif/Landscape_5_out.jpg differ diff --git a/fixtures/exif/Landscape_6_out.jpg b/fixtures/exif/Landscape_6_out.jpg index 4ef5ac0..1ec5d12 100644 Binary files a/fixtures/exif/Landscape_6_out.jpg and b/fixtures/exif/Landscape_6_out.jpg differ diff --git a/fixtures/exif/Landscape_7_out.jpg b/fixtures/exif/Landscape_7_out.jpg index 363ab61..8a4f94c 100644 Binary files a/fixtures/exif/Landscape_7_out.jpg and b/fixtures/exif/Landscape_7_out.jpg differ diff --git a/fixtures/exif/Landscape_8_out.jpg b/fixtures/exif/Landscape_8_out.jpg index 81d4e7c..3e50c6f 100644 Binary files a/fixtures/exif/Landscape_8_out.jpg and b/fixtures/exif/Landscape_8_out.jpg differ diff --git a/fixtures/exif/Portrait_1_out.jpg b/fixtures/exif/Portrait_1_out.jpg index 593b0b8..e3af98c 100644 Binary files a/fixtures/exif/Portrait_1_out.jpg and b/fixtures/exif/Portrait_1_out.jpg differ diff --git a/fixtures/exif/Portrait_2_out.jpg b/fixtures/exif/Portrait_2_out.jpg index 00c1137..5c5366f 100644 Binary files a/fixtures/exif/Portrait_2_out.jpg and b/fixtures/exif/Portrait_2_out.jpg differ diff --git a/fixtures/exif/Portrait_3_out.jpg b/fixtures/exif/Portrait_3_out.jpg index f45c5d0..8a8da00 100644 Binary files a/fixtures/exif/Portrait_3_out.jpg and b/fixtures/exif/Portrait_3_out.jpg differ diff --git a/fixtures/exif/Portrait_4_out.jpg b/fixtures/exif/Portrait_4_out.jpg index 592776b..2528749 100644 Binary files a/fixtures/exif/Portrait_4_out.jpg and b/fixtures/exif/Portrait_4_out.jpg differ diff --git a/fixtures/exif/Portrait_5_out.jpg b/fixtures/exif/Portrait_5_out.jpg index 703e731..c2b2ff3 100644 Binary files a/fixtures/exif/Portrait_5_out.jpg and b/fixtures/exif/Portrait_5_out.jpg differ diff --git a/fixtures/exif/Portrait_6_out.jpg b/fixtures/exif/Portrait_6_out.jpg index fedb8fd..a13b3f1 100644 Binary files a/fixtures/exif/Portrait_6_out.jpg and b/fixtures/exif/Portrait_6_out.jpg differ diff --git a/fixtures/exif/Portrait_7_out.jpg b/fixtures/exif/Portrait_7_out.jpg index 4536d01..e64cc8d 100644 Binary files a/fixtures/exif/Portrait_7_out.jpg and b/fixtures/exif/Portrait_7_out.jpg differ diff --git a/fixtures/exif/Portrait_8_out.jpg b/fixtures/exif/Portrait_8_out.jpg index 6b464f7..ffe52aa 100644 Binary files a/fixtures/exif/Portrait_8_out.jpg and b/fixtures/exif/Portrait_8_out.jpg differ diff --git a/fixtures/test_gif.jpg b/fixtures/test_gif.jpg index 691e4a7..7f28bce 100644 Binary files a/fixtures/test_gif.jpg and b/fixtures/test_gif.jpg differ diff --git a/fixtures/test_pdf.jpg b/fixtures/test_pdf.jpg index 1058bb0..bbb26c5 100644 Binary files a/fixtures/test_pdf.jpg and b/fixtures/test_pdf.jpg differ diff --git a/fixtures/test_svg.jpg b/fixtures/test_svg.jpg index d20c14d..77b4714 100644 Binary files a/fixtures/test_svg.jpg and b/fixtures/test_svg.jpg differ diff --git a/options.go b/options.go index d7ee592..f155f5e 100644 --- a/options.go +++ b/options.go @@ -204,6 +204,7 @@ type Options struct { NoAutoRotate bool NoProfile bool Interlace bool + StripMetadata bool Extend Extend Rotate Angle Background Color diff --git a/resizer.go b/resizer.go index cce7b17..eb06fc2 100644 --- a/resizer.go +++ b/resizer.go @@ -161,6 +161,7 @@ func saveImage(image *C.VipsImage, o Options) ([]byte, error) { NoProfile: o.NoProfile, Interpretation: o.Interpretation, OutputICC: o.OutputICC, + StripMetadata: o.StripMetadata, } // Finally get the resultant buffer return vipsSave(image, saveOptions) diff --git a/resize_test.go b/resizer_test.go similarity index 100% rename from resize_test.go rename to resizer_test.go diff --git a/vips.go b/vips.go index fc876c2..fce3050 100644 --- a/vips.go +++ b/vips.go @@ -55,6 +55,7 @@ type vipsSaveOptions struct { Type ImageType Interlace bool NoProfile bool + StripMetadata bool OutputICC string // Absolute path to the output ICC profile Interpretation Interpretation } @@ -420,6 +421,7 @@ func vipsSave(image *C.VipsImage, o vipsSaveOptions) ([]byte, error) { saveErr := C.int(0) interlace := C.int(boolToInt(o.Interlace)) quality := C.int(o.Quality) + strip := C.int(boolToInt(o.Interlace)) if o.Type != 0 && !IsTypeSupportedSave(o.Type) { return nil, fmt.Errorf("VIPS cannot save to %#v", ImageTypes[o.Type]) @@ -427,13 +429,13 @@ func vipsSave(image *C.VipsImage, o vipsSaveOptions) ([]byte, error) { var ptr unsafe.Pointer switch o.Type { case WEBP: - saveErr = C.vips_webpsave_bridge(tmpImage, &ptr, &length, 1, quality) + saveErr = C.vips_webpsave_bridge(tmpImage, &ptr, &length, strip, quality) case PNG: - saveErr = C.vips_pngsave_bridge(tmpImage, &ptr, &length, 1, C.int(o.Compression), quality, interlace) + saveErr = C.vips_pngsave_bridge(tmpImage, &ptr, &length, strip, C.int(o.Compression), quality, interlace) case TIFF: saveErr = C.vips_tiffsave_bridge(tmpImage, &ptr, &length) default: - saveErr = C.vips_jpegsave_bridge(tmpImage, &ptr, &length, 1, quality, interlace) + saveErr = C.vips_jpegsave_bridge(tmpImage, &ptr, &length, strip, quality, interlace) } if int(saveErr) != 0 { diff --git a/vips.h b/vips.h index 067466e..170aa1d 100644 --- a/vips.h +++ b/vips.h @@ -269,7 +269,7 @@ vips_icc_transform_bridge (VipsImage *in, VipsImage **out, const char *output_ic int vips_jpegsave_bridge(VipsImage *in, void **buf, size_t *len, int strip, int quality, int interlace) { return vips_jpegsave_buffer(in, buf, len, - "strip", strip, + "strip", strip == 1 ? TRUE : FALSE, "Q", quality, "optimize_coding", TRUE, "interlace", with_interlace(interlace), @@ -281,7 +281,7 @@ int vips_pngsave_bridge(VipsImage *in, void **buf, size_t *len, int strip, int compression, int quality, int interlace) { #if (VIPS_MAJOR_VERSION >= 8 || (VIPS_MAJOR_VERSION >= 7 && VIPS_MINOR_VERSION >= 42)) return vips_pngsave_buffer(in, buf, len, - "strip", FALSE, + "strip", strip == 1 ? TRUE : FALSE, "compression", compression, "interlace", with_interlace(interlace), "filter", VIPS_FOREIGN_PNG_FILTER_NONE, @@ -289,7 +289,7 @@ vips_pngsave_bridge(VipsImage *in, void **buf, size_t *len, int strip, int compr ); #else return vips_pngsave_buffer(in, buf, len, - "strip", FALSE, + "strip", strip == 1 ? TRUE : FALSE, "compression", compression, "interlace", with_interlace(interlace), NULL @@ -300,7 +300,7 @@ vips_pngsave_bridge(VipsImage *in, void **buf, size_t *len, int strip, int compr int vips_webpsave_bridge(VipsImage *in, void **buf, size_t *len, int strip, int quality) { return vips_webpsave_buffer(in, buf, len, - "strip", strip, + "strip", strip == 1 ? TRUE : FALSE, "Q", quality, NULL ); diff --git a/vips_test.go b/vips_test.go index 8631fd4..9972fdb 100644 --- a/vips_test.go +++ b/vips_test.go @@ -33,7 +33,7 @@ func TestVipsSave(t *testing.T) { for _, typ := range types { image, _, _ := vipsRead(readImage("test.jpg")) - options := vipsSaveOptions{Quality: 95, Type: typ} + options := vipsSaveOptions{Quality: 95, Type: typ, StripMetadata: true} buf, err := vipsSave(image, options) if err != nil {