forked from enlightenment/efl
oops. memfile compatability layer bug. fixed. using ftell now. also added in
an extra "if" for "if quality >= 90 then make pixel UV sampling 1x1 not 2x2 as normal for jpeg encoding" SVN revision: 7040
This commit is contained in:
parent
40763eba6e
commit
32061346b6
|
@ -558,7 +558,7 @@ eet_data_image_jpeg_convert(int *size, void *data, int w, int h, int alpha, int
|
|||
struct jpeg_compress_struct cinfo;
|
||||
FILE *f;
|
||||
unsigned char *buf;
|
||||
|
||||
|
||||
f =_eet_memfile_write_open(&d, &sz);
|
||||
if (!f) return NULL;
|
||||
|
||||
|
@ -590,6 +590,15 @@ eet_data_image_jpeg_convert(int *size, void *data, int w, int h, int alpha, int
|
|||
cinfo.in_color_space = JCS_RGB;
|
||||
jpeg_set_defaults(&cinfo);
|
||||
jpeg_set_quality(&cinfo, quality, TRUE);
|
||||
if (quality >= 90)
|
||||
{
|
||||
cinfo.comp_info[0].h_samp_factor = 1;
|
||||
cinfo.comp_info[0].v_samp_factor = 1;
|
||||
cinfo.comp_info[1].h_samp_factor = 1;
|
||||
cinfo.comp_info[1].v_samp_factor = 1;
|
||||
cinfo.comp_info[2].h_samp_factor = 1;
|
||||
cinfo.comp_info[2].v_samp_factor = 1;
|
||||
}
|
||||
jpeg_start_compress(&cinfo, TRUE);
|
||||
|
||||
ptr = data;
|
||||
|
@ -612,9 +621,9 @@ eet_data_image_jpeg_convert(int *size, void *data, int w, int h, int alpha, int
|
|||
jpeg_finish_compress(&cinfo);
|
||||
jpeg_destroy_compress(&cinfo);
|
||||
|
||||
_eet_memfile_write_close(f);
|
||||
*size = sz;
|
||||
if (buf) free(buf);
|
||||
_eet_memfile_write_close(f);
|
||||
return d;
|
||||
}
|
||||
|
||||
|
@ -625,7 +634,7 @@ eet_data_image_jpeg_alpha_convert(int *size, void *data, int w, int h, int alpha
|
|||
unsigned char *d;
|
||||
int *header;
|
||||
int sz1, sz2;
|
||||
|
||||
|
||||
if (words_bigendian == -1)
|
||||
{
|
||||
unsigned long int v;
|
||||
|
@ -676,6 +685,15 @@ eet_data_image_jpeg_alpha_convert(int *size, void *data, int w, int h, int alpha
|
|||
cinfo.in_color_space = JCS_RGB;
|
||||
jpeg_set_defaults(&cinfo);
|
||||
jpeg_set_quality(&cinfo, quality, TRUE);
|
||||
if (quality >= 90)
|
||||
{
|
||||
cinfo.comp_info[0].h_samp_factor = 1;
|
||||
cinfo.comp_info[0].v_samp_factor = 1;
|
||||
cinfo.comp_info[1].h_samp_factor = 1;
|
||||
cinfo.comp_info[1].v_samp_factor = 1;
|
||||
cinfo.comp_info[2].h_samp_factor = 1;
|
||||
cinfo.comp_info[2].v_samp_factor = 1;
|
||||
}
|
||||
jpeg_start_compress(&cinfo, TRUE);
|
||||
|
||||
ptr = data;
|
||||
|
@ -750,6 +768,15 @@ eet_data_image_jpeg_alpha_convert(int *size, void *data, int w, int h, int alpha
|
|||
cinfo.in_color_space = JCS_GRAYSCALE;
|
||||
jpeg_set_defaults(&cinfo);
|
||||
jpeg_set_quality(&cinfo, quality, TRUE);
|
||||
if (quality >= 90)
|
||||
{
|
||||
cinfo.comp_info[0].h_samp_factor = 1;
|
||||
cinfo.comp_info[0].v_samp_factor = 1;
|
||||
cinfo.comp_info[1].h_samp_factor = 1;
|
||||
cinfo.comp_info[1].v_samp_factor = 1;
|
||||
cinfo.comp_info[2].h_samp_factor = 1;
|
||||
cinfo.comp_info[2].v_samp_factor = 1;
|
||||
}
|
||||
jpeg_start_compress(&cinfo, TRUE);
|
||||
|
||||
ptr = data;
|
||||
|
|
|
@ -92,7 +92,8 @@ _eet_memfile_write_close(FILE *f)
|
|||
{
|
||||
int j;
|
||||
|
||||
(*(_eet_memfile_info[i].size)) = fseek(f, 0, SEEK_END);
|
||||
fseek(f, 0, SEEK_END);
|
||||
(*(_eet_memfile_info[i].size)) = ftell(f);
|
||||
rewind(f);
|
||||
(*(_eet_memfile_info[i].data)) = malloc(*(_eet_memfile_info[i].size));
|
||||
if (!(*(_eet_memfile_info[i].data)))
|
||||
|
|
Loading…
Reference in New Issue