Method: Magick::Image#marshal_dump
- Defined in:
- ext/RMagick/rmimage.c
permalink #marshal_dump ⇒ img.filename, img.to_blob
Support Marshal.dump >= 1.8.
Ruby usage:
- @verbatim Image#marshal_dump @endverbatim
8171 8172 8173 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8204 8205 8206 8207 8208 8209 8210 8211 |
# File 'ext/RMagick/rmimage.c', line 8171
VALUE
Image_marshal_dump(VALUE self)
{
Image *image;
Info *info;
unsigned char *blob;
size_t length;
VALUE ary;
ExceptionInfo exception;
image = rm_check_destroyed(self);
info = CloneImageInfo(NULL);
if (!info)
{
rb_raise(rb_eNoMemError, "not enough memory to initialize Info object");
}
ary = rb_ary_new2(2);
if (image->filename)
{
rb_ary_store(ary, 0, rb_str_new2(image->filename));
}
else
{
rb_ary_store(ary, 0, Qnil);
}
GetExceptionInfo(&exception);
blob = ImageToBlob(info, image, &length, &exception);
// Destroy info before raising an exception
DestroyImageInfo(info);
CHECK_EXCEPTION()
(void) DestroyExceptionInfo(&exception);
rb_ary_store(ary, 1, rb_str_new((char *)blob, (long)length));
magick_free((void*)blob);
return ary;
}
|