Guys,
I want to use evas to resize an image file. I'm using the attached
program, but it's saving a black rectangle instead of the resized image.
Can someone point me what I'm doing wrong?
Thanks.
--
Rafael Fonseca
ProFUSION embedded systems
http://www.profusion.mobi
#include <limits.h>
#include <Evas.h>
#include <Ecore_Evas.h>
int
main(int argc, char *argv[])
{
int namelen, w, h, error;
Evas *e;
Ecore_Evas *ee;
Evas_Object *img;
char name[PATH_MAX], *ext;
if (argc < 2) {
fprintf(stderr, "Usage: %s <image>\n", argv[0]);
return 1;
}
if (!ecore_evas_init()) {
fprintf(stderr, "Could not init ecore-evas\n");
return 1;
}
ee = ecore_evas_buffer_new(480, 800);
if (!ee) {
fprintf(stderr, "Could not create an ecore-evas\n");
return 1;
}
e = ecore_evas_get(ee);
if (!e) {
fprintf(stderr, "Could not get evas\n");
return 1;
}
img = evas_object_image_add(e);
if (!img) {
fprintf(stderr, "Could not add image obj\n");
return -1;
}
evas_object_image_file_set(img, argv[1], NULL);
error = evas_object_image_load_error_get(img);
if (error != EVAS_LOAD_ERROR_NONE) {
fprintf(stderr, "could not load image %s\n", argv[1]);
return -2;
}
evas_object_image_fill_set(img, 0, 0, 480, 800);
evas_object_image_size_get(img, &w, &h);
printf("Original size: %d x %d\n", w, h);
if ((w <= 0) || (h <= 0))
return -3;
namelen = strlen(argv[1]);
ext = argv[1] + namelen - 4;
memcpy(name, argv[1], namelen - 4);
sprintf(name + namelen - 4, "_resized%s", ext);
/* This size set call is destroying my image buffer */
evas_object_image_size_set(img, 480, 800);
if (!evas_object_image_save(img, name, NULL, NULL))
fprintf(stderr, "Could not save image %s\n", name);
evas_object_del(img);
ecore_evas_free(ee);
ecore_evas_shutdown();
return 0;
}
------------------------------------------------------------------------------
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel