gint export_image(gchar *filename, GHashTable *cache, RSOutput *output, RSFilter *filter, gint snapshot, double exposure, gchar *outputname, gint boundingbox, RSFilter *resample) { RS_PHOTO *photo = NULL; if (cache) { photo = (RS_PHOTO *) g_hash_table_lookup(cache, filename); if (!photo) { photo = rs_photo_load_from_file(filename); g_hash_table_insert(cache, filename, photo); printf("Adding %s to cache\n", filename); } } else photo = rs_photo_load_from_file(filename); if (photo) { rs_metadata_load_from_file(photo->metadata, filename); rs_cache_load(photo); GList *filters = g_list_append(NULL, filter); rs_photo_set_exposure(photo, 0, exposure); rs_photo_apply_to_filters(photo, filters, snapshot); if (boundingbox > 0) { rs_filter_set_enabled(resample, TRUE); rs_filter_set_recursive(filter, "image", photo->input_response, "filename", photo->filename, "bounding-box", TRUE, "width", boundingbox, "height", boundingbox, NULL); } else { rs_filter_set_enabled(resample, FALSE); rs_filter_set_recursive(filter, "image", photo->input_response, "filename", photo->filename, NULL); } if (g_object_class_find_property(G_OBJECT_GET_CLASS(output), "filename")) g_object_set(output, "filename", outputname, NULL); rs_output_set_from_conf(output, "batch"); rs_output_execute(output, filter); gint value = calculate_lightness(filter); printf("%s: %d\n", filename, value); g_list_free(filters); return value; } else return -1; }
RSMetadata * rs_metadata_new_from_file(const gchar *filename) { RSMetadata *metadata = rs_metadata_new(); g_return_val_if_fail(filename != NULL, metadata); g_return_val_if_fail(g_path_is_absolute(filename), metadata); if (!rs_metadata_cache_load(metadata, filename)) { rs_metadata_load_from_file(metadata, filename); rs_metadata_cache_save(metadata, filename); } generate_lens_identifier(metadata); return metadata; }
gboolean rs_metadata_load(RSMetadata *metadata, const gchar *filename) { g_return_val_if_fail(RS_IS_METADATA(metadata), FALSE); g_return_val_if_fail(filename != NULL, FALSE); g_return_val_if_fail(g_path_is_absolute(filename), FALSE); if (!rs_metadata_cache_load(metadata, filename)) { if (rs_metadata_load_from_file(metadata, filename)) { rs_metadata_cache_save(metadata, filename); generate_lens_identifier(metadata); return TRUE; } return FALSE; } generate_lens_identifier(metadata); return TRUE; }