コード例 #1
0
ファイル: writer.c プロジェクト: ZeroPivot/ruby-vips
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);
}
コード例 #2
0
ファイル: writer.c プロジェクト: JamesHarrison/ruby-vips
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);
}
コード例 #3
0
ファイル: writer.c プロジェクト: ender672/ruby-vips
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;
}