Beispiel #1
0
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);
}
Beispiel #2
0
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;
}
Beispiel #4
0
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);
  }
}