Method: Magick::Image#write
- Defined in:
- ext/RMagick/rmimage.cpp
#write(file) {|info| ... } ⇒ Magick::Image
Write the image to the file.
15926 15927 15928 15929 15930 15931 15932 15933 15934 15935 15936 15937 15938 15939 15940 15941 15942 15943 15944 15945 15946 15947 15948 15949 15950 15951 15952 15953 15954 15955 15956 15957 15958 15959 15960 15961 15962 15963 15964 15965 15966 15967 15968 15969 15970 15971 15972 15973 15974 15975 15976 15977 15978 15979 15980 15981 |
# File 'ext/RMagick/rmimage.cpp', line 15926
VALUE
Image_write(VALUE self, VALUE file)
{
Image *image;
Info *info;
VALUE info_obj;
#if defined(IMAGEMAGICK_7)
ExceptionInfo *exception;
#endif
image = rm_check_destroyed(self);
info_obj = rm_info_new();
TypedData_Get_Struct(info_obj, Info, &rm_info_data_type, info);
if (TYPE(file) == T_FILE)
{
rb_io_t *fptr;
// Ensure file is open - raise error if not
GetOpenFile(file, fptr);
rb_io_check_writable(fptr);
add_format_prefix(info, rm_io_path(file));
#if defined(_WIN32)
SetImageInfoFile(info, NULL);
#else
SetImageInfoFile(info, rb_io_stdio_file(fptr));
#endif
}
else
{
add_format_prefix(info, file);
SetImageInfoFile(info, NULL);
}
strlcpy(image->filename, info->filename, sizeof(image->filename));
rm_sync_image_options(image, info);
info->adjoin = MagickFalse;
#if defined(IMAGEMAGICK_7)
exception = AcquireExceptionInfo();
GVL_STRUCT_TYPE(WriteImage) args = { info, image, exception };
CALL_FUNC_WITHOUT_GVL(GVL_FUNC(WriteImage), &args);
CHECK_EXCEPTION();
DestroyExceptionInfo(exception);
#else
GVL_STRUCT_TYPE(WriteImage) args = { info, image };
CALL_FUNC_WITHOUT_GVL(GVL_FUNC(WriteImage), &args);
rm_check_image_exception(image, RetainOnError);
#endif
RB_GC_GUARD(info_obj);
return self;
}
|