void imagetest_write(void) { struct image *image; uint32_t i; struct rect rect; image = image_new(IMAGE_TYPE_8, 640, 480); image_putline(image, 20, 460, 620, 20, 60); image_putellipse(image, 320, 240, 300, 200, 64, 180); image_putcircle(image, 320, 240, 80, 64, 195); rect.x = 60; rect.y = 300; rect.w = 580; rect.h = 180; image_putrect(image, &rect, 80); for(i = 0; i < 256; i++) image_putpixel(image, 20 + i, 50, i); /* image_putstr(image, &image_font_6x10, 100, 40, 12, IMAGE_ALIGN_LEFT, "libchaos rocks!"); image_putstr(image, &image_font_6x10, 160, 80, 11, IMAGE_ALIGN_LEFT, "dschoint");*/ image_save_gif(image, "lala.gif"); image_delete(image); }
static gboolean image_save(format_type type, image_output imageout, format_params params) { gboolean result; if (type == FORMAT_BMP) { result = image_save_bmp(imageout); } else if(type == FORMAT_GIF) { result = image_save_gif(imageout, ((format_params_gif)params)->interlace); } else if(type == FORMAT_ICON) { result = image_save_icon(imageout); } else if(type == FORMAT_JPEG) { result = image_save_jpeg( imageout, ((format_params_jpeg)params)->quality, ((format_params_jpeg)params)->smoothing, ((format_params_jpeg)params)->entropy, ((format_params_jpeg)params)->progressive, ((format_params_jpeg)params)->comment, ((format_params_jpeg)params)->subsampling, ((format_params_jpeg)params)->baseline, ((format_params_jpeg)params)->markers, ((format_params_jpeg)params)->dct ); } else if(type == FORMAT_PNG) { result = image_save_png(imageout, ((format_params_png)params)->interlace, ((format_params_png)params)->compression, ((format_params_png)params)->savebgc, ((format_params_png)params)->savegamma, ((format_params_png)params)->saveoff, ((format_params_png)params)->savephys, ((format_params_png)params)->savetime, ((format_params_png)params)->savecomm, ((format_params_png)params)->savetrans ); } else if(type == FORMAT_TGA) { result = image_save_tga(imageout, ((format_params_tga)params)->rle, ((format_params_tga)params)->origin); } else if(type == FORMAT_TIFF) { result = image_save_tiff(imageout, ((format_params_tiff)params)->compression); } else { result = gimp_file_save( GIMP_RUN_NONINTERACTIVE, imageout->image_id, imageout->drawable_id, imageout->filepath, imageout->filename ); } return result; }
static gboolean image_save(format_type type, image_output imageout, format_params params) { gboolean result; if (type == FORMAT_BMP) { result = image_save_bmp(imageout); } else if(type == FORMAT_GIF) { result = image_save_gif(imageout, ((format_params_gif)params)->interlace); } else if(type == FORMAT_ICON) { result = image_save_icon(imageout); } else if(type == FORMAT_JPEG) { result = image_save_jpeg( imageout, ((format_params_jpeg)params)->quality, ((format_params_jpeg)params)->smoothing, ((format_params_jpeg)params)->entropy, ((format_params_jpeg)params)->progressive, ((format_params_jpeg)params)->comment, ((format_params_jpeg)params)->subsampling, ((format_params_jpeg)params)->baseline, ((format_params_jpeg)params)->markers, ((format_params_jpeg)params)->dct ); } else if(type == FORMAT_PNG) { result = image_save_png(imageout, ((format_params_png)params)->interlace, ((format_params_png)params)->compression, ((format_params_png)params)->savebgc, ((format_params_png)params)->savegamma, ((format_params_png)params)->saveoff, ((format_params_png)params)->savephys, ((format_params_png)params)->savetime, ((format_params_png)params)->savecomm, ((format_params_png)params)->savetrans ); } else if(type == FORMAT_TGA) { result = image_save_tga(imageout, ((format_params_tga)params)->rle, ((format_params_tga)params)->origin); } else if(type == FORMAT_TIFF) { result = image_save_tiff(imageout, ((format_params_tiff)params)->compression); } else { // save in the original format int final_drawable = gimp_image_merge_visible_layers(imageout->image_id, GIMP_CLIP_TO_IMAGE); // but first check if the images was a GIF and it's palette has changed during the process if (file_has_extension(imageout->filename, ".gif") && gimp_drawable_is_rgb(final_drawable)) { gimp_image_convert_indexed( imageout->image_id, GIMP_FS_DITHER, GIMP_MAKE_PALETTE, gimp_drawable_has_alpha (final_drawable) ? 255 : 256, TRUE, FALSE, "" ); } result = gimp_file_save( GIMP_RUN_NONINTERACTIVE, imageout->image_id, final_drawable, imageout->filepath, imageout->filename ); } return result; }
void ttftest_write(const char *text, const char *font, const char *file, const char *bg, const char *color) { struct image *ttftext; struct image *gradient; struct ttf *ttf; struct color fg; struct rect drect; struct rect srect; log(ttftest_log, L_status, "---------- TrueType GIF renderer ----------", text); log(ttftest_log, L_status, "text: %s", text); log(ttftest_log, L_status, "font: %s", font); log(ttftest_log, L_status, "bg: %s", bg); log(ttftest_log, L_status, "file: %s", file); log(ttftest_log, L_status, "color: %s", color); log(ttftest_log, L_status, "-------------------------------------------"); ttf = ttf_new(font); if(ttf_open(ttf, font)) { log(ttftest_log, L_fatal, "Could not load font: %s", font); return; } ttf_calc(ttf, 11); ttf->style |= TTF_STYLE_BOLD; image_color_parse(&fg, color); ttftext = ttf_text_blended(ttf, text, &fg); gradient = image_load_gif(bg); if(gradient == NULL) { log(ttftest_log, L_fatal, "Could not load background image: %s", bg); return; } image_convert(gradient, IMAGE_TYPE_32); srect = ttftext->rect; drect = gradient->rect; drect.y = 1; drect.x = 6; image_blit_32to32(ttftext, &srect, gradient, &drect); image_convert(gradient, IMAGE_TYPE_8); if(gradient == NULL) { log(ttftest_log, L_warning, "Could not render test glyph."); } else { if(image_save_gif(gradient, file)) { log(ttftest_log, L_fatal, "Could not save output: %s", file); } image_delete(gradient); } }