//参数一:原图像文件夹路径,参数2:图像保存文件夹路径,参数3:转换后的图片格式jpg int main(int argc, char **argv) { char *orig_image_folder = argv[1]; char *conv_image_folder = argv[2]; char *conv_image_format = argv[3]; vector<string> image_names; getFiles(orig_image_folder, "", image_names); int i; for (i = 0; i < image_names.size(); i++) { char orig_image[256]; sprintf(orig_image, "%s", image_names[i]); char conv_image[256]; sprintf(conv_image, "%s/%07d.%s", conv_image_folder, i + 1, conv_image_format); image_convert(orig_image, conv_image); printf("\n Convert %s successfully.\n", image_names[i]); } return 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); } }
int get_image(VASurfaceID surface, Image *dst_img) { VAAPIContext * const vaapi = vaapi_get_context(); VAImage image; VAImageFormat *image_format = NULL; VAStatus status; Image bound_image; int i, is_bound_image = 0, is_derived_image = 0, error = -1; image.image_id = VA_INVALID_ID; image.buf = VA_INVALID_ID; if (!image_format) { status = vaDeriveImage(vaapi->display, surface, &image); if (vaapi_check_status(status, "vaDeriveImage()")) { if (image.image_id != VA_INVALID_ID && image.buf != VA_INVALID_ID) { D(bug("using vaDeriveImage()\n")); is_derived_image = 1; image_format = &image.format; } else { D(bug("vaDeriveImage() returned success but VA image is invalid. Trying vaGetImage()\n")); } } } if (!image_format) { for (i = 0; image_formats[i] != 0; i++) { if (get_image_format(vaapi, image_formats[i], &image_format)) break; } } if (!image_format) goto end; D(bug("selected %s image format for getimage\n", string_of_VAImageFormat(image_format))); if (!is_derived_image) { status = vaCreateImage(vaapi->display, image_format, vaapi->picture_width, vaapi->picture_height, &image); if (!vaapi_check_status(status, "vaCreateImage()")) goto end; D(bug("created image with id 0x%08x and buffer id 0x%08x\n", image.image_id, image.buf)); VARectangle src_rect; src_rect.x = 0; src_rect.y = 0; src_rect.width = vaapi->picture_width; src_rect.height = vaapi->picture_height; D(bug("src rect (%d,%d):%ux%u\n", src_rect.x, src_rect.y, src_rect.width, src_rect.height)); status = vaGetImage( vaapi->display, vaapi->surface_id, src_rect.x, src_rect.y, src_rect.width, src_rect.height, image.image_id ); if (!vaapi_check_status(status, "vaGetImage()")) { vaDestroyImage(vaapi->display, image.image_id); goto end; } } if (bind_image(&image, &bound_image) < 0) goto end; is_bound_image = 1; if (image_convert(dst_img, &bound_image) < 0) goto end; error = 0; end: if (is_bound_image) { if (release_image(&image) < 0) error = -1; } if (image.image_id != VA_INVALID_ID) { status = vaDestroyImage(vaapi->display, image.image_id); if (!vaapi_check_status(status, "vaDestroyImage()")) error = -1; } return error; }