Tomas Aparicio 10 years ago
parent fd4fdee2cc
commit 8fdf28fe5e

@ -15,6 +15,9 @@ import (
"unsafe"
)
// Current libvips version
const VipsVersion = string(C.VIPS_VERSION)
const HasMagickSupport = int(C.VIPS_MAGICK_SUPPORT) == 1
const (
@ -291,7 +294,6 @@ func vipsPreSave(image *C.VipsImage, o *vipsSaveOptions) (*C.VipsImage, error) {
if int(err) != 0 {
return nil, catchVipsError()
}
C.g_object_unref(C.gpointer(image))
image = outImage
}
@ -301,10 +303,11 @@ func vipsPreSave(image *C.VipsImage, o *vipsSaveOptions) (*C.VipsImage, error) {
func vipsSave(image *C.VipsImage, o vipsSaveOptions) ([]byte, error) {
defer C.g_object_unref(C.gpointer(image))
image, err := vipsPreSave(image, &o)
tmpImage, err := vipsPreSave(image, &o)
if err != nil {
return nil, err
}
defer C.g_object_unref(C.gpointer(tmpImage))
length := C.size_t(0)
saveErr := C.int(0)
@ -314,13 +317,13 @@ func vipsSave(image *C.VipsImage, o vipsSaveOptions) ([]byte, error) {
var ptr unsafe.Pointer
switch o.Type {
case WEBP:
saveErr = C.vips_webpsave_bridge(image, &ptr, &length, 1, quality)
saveErr = C.vips_webpsave_bridge(tmpImage, &ptr, &length, 1, quality)
break
case PNG:
saveErr = C.vips_pngsave_bridge(image, &ptr, &length, 1, C.int(o.Compression), quality, interlace)
saveErr = C.vips_pngsave_bridge(tmpImage, &ptr, &length, 1, C.int(o.Compression), quality, interlace)
break
default:
saveErr = C.vips_jpegsave_bridge(image, &ptr, &length, 1, quality, interlace)
saveErr = C.vips_jpegsave_bridge(tmpImage, &ptr, &length, 1, quality, interlace)
break
}
@ -355,9 +358,10 @@ func vipsExtract(image *C.VipsImage, left, top, width, height int) (*C.VipsImage
func vipsShrinkJpeg(buf []byte, input *C.VipsImage, shrink int) (*C.VipsImage, error) {
var image *C.VipsImage
var ptr = unsafe.Pointer(&buf[0])
defer C.g_object_unref(C.gpointer(input))
err := C.vips_jpegload_buffer_shrink(unsafe.Pointer(&buf[0]), C.size_t(len(buf)), &image, C.int(shrink))
err := C.vips_jpegload_buffer_shrink(ptr, C.size_t(len(buf)), &image, C.int(shrink))
if err != 0 {
return nil, catchVipsError()
}

Loading…
Cancel
Save