static VALUE jpeg_buf_internal(VALUE obj, VALUE quality) { char *buf = NULL; int length; GetImg(obj, data, im); #if ATLEAST_VIPS( 7, 28 ) { size_t len; if (vips_jpegsave_buffer(im, &buf, &len, "Q", NUM2INT(quality), NULL)) vips_lib_error(); /* Argh. */ length = len; } #else if (im_vips2bufjpeg(im, NULL, NUM2INT(quality), &buf, &length)) vips_lib_error(); #endif return rb_tainted_str_new(buf, length); }
static VALUE jpeg_buf_internal(VALUE obj, VALUE quality) { char *buf = NULL; int length; GetImg(obj, data, im); if (im_vips2bufjpeg(im, NULL, NUM2INT(quality), &buf, &length)) vips_lib_error(); return rb_tainted_str_new(buf, length); }
static VALUE jpeg_buf_internal(VALUE obj, VALUE quality) { VipsImage *im_out; char *buf = NULL; int length; VALUE str; GetImg(obj, data, im); if (!(im_out = im_open("writer_jpeg_buf", "p"))) vips_lib_error(); if (im_vips2bufjpeg(im, im_out, NUM2INT(quality), &buf, &length)) { im_close(im_out); vips_lib_error(); } str = rb_tainted_str_new(buf, length); im_close(im_out); return str; }