From: Carsten H. (T. R. <ra...@ra...> - 2004-08-30 09:47:50
|
On Mon, 30 Aug 2004 10:54:44 +0200 Holger Hanrath <bar...@ar...> babbled: > On Mon, 30 Aug 2004 17:22:30 +0900, Carsten Haitzler wrote: > > > On Mon, 30 Aug 2004 10:12:02 +0200 Holger Hanrath <bar...@ar...> > > babbled: > > > >> On Sat, 21 Aug 2004 16:38:01 +0200, Michael 'Mickey' Lauer wrote: > >> > >> > Hi, > >> > > >> > is stuffing a picture.png into /path/to/my.eet and then trying to load > >> > it via evas_object_image_load( obj, "/path/to/my.eet", "picture.png" ) > >> > supposed to work? > >> > >> no, > >> > >> try this: > >> > >> Evas_Object * obj; > >> > >> int > >> load_image_from_eet(void) > >> { > >> int w, h, alpha, compress, quality, lossy; > >> Eet_File * ef = NULL; > >> void * data = NULL; > >> > >> ef = eet_open("/path/to/my.eet", EET_FILE_MODE_READ); > >> > >> if(NULL == ef) > >> return -1; > >> > >> /* load image data from eet file */ > >> data = eet_data_image_read(ef, "image/my_image", &w, &h, > >> &alpha, &compress, &quality, &lossy); > >> > >> if(NULL == data) > >> { > >> eet_close(ef); > >> return -1; > >> } > >> > >> /* create a new image frome the data*/ > >> obj = evas_object_image_add(evas); > >> > >> evas_object_image_alpha_set(obj, alpha); > >> evas_object_image_size_set(obj, w, h); > >> evas_object_image_data_copy_set(obj, data); > >> > >> evas_object_show(bg); > >> > >> free(data); > >> eet_close(ef); > >> > >> return 1; > >> } > > > > no this wont work. the eet entry is a png file verbatim. what u have above > > is what evas does internally anyway. use eet_data_image_write() to store the > > image int he eet :) > > i don't want to store anything. the code above opens an eet-file and read > the data from the given key and then it try to make an evas-image of it > and it works fine :) but the image he STORED by using the cmd-line eet util wont load ad the eet entry contains a png file's bytes, verbatim. he needs to store it using eet_data_image_write() before he can load it with eet or evas. also your code above is redudant and slow. evas can load the image itself - you cont need to open the eet file yourself. just evas_object_image_file_set(obj, "/path/to/my.eet", "image/my_image"); will load the image for you including caching the load, being able to share the same loaded pixel data between multiple image objects in multiple canvases and without the extra memory copy of image pixels you have there :) -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) ra...@ra... 熊耳 - 車君 (数田) ra...@de... Tokyo, Japan (東京 日本) |