Google

/*
 * Return a copy of the image with the a portion of the source image
 * blended at the specified rectangle.
 *
 * Examples:
 *   src_x, src_y, src_w, src_h = 10, 10, 100, 100
 *   dst_x, dst_y, dst_w, dst_h = 10, 10, 50, 50
 *   image.blend source_image,
 *               src_x, src_y, src_w, src_h, 
 *               dst_x, dst_y, dst_w, dst_h
 *
 *   src_rect = [50, 50, 5, 5]
 *   dst_rect = [0, 0, image.width, image.height]
 *   merge_alpha = false
 *   image.blend source_image, src_rect, dst_rect, merge_alpha
 *
 *   src_x, src_y, src_w, src_h = 10, 10, 100, 100
 *   dst_x, dst_y, dst_w, dst_h = 10, 10, 50, 50
 *   image.blend_image source_image,
 *                     src_x, src_y, src_w, src_h, 
 *                     dst_x, dst_y, dst_w, dst_h
 *
 *   src_rect = [50, 50, 5, 5]
 *   dst_rect = [0, 0, image.width, image.height]
 *   merge_alpha = false
 *   image.blend_image source_image, src_rect, dst_rect, merge_alpha
 *
 */
static VALUE image_blend_image(int argc, VALUE *argv, VALUE self) {