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;
|
struct jpeg_compress_struct cinfo;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
unsigned char *buf;
|
unsigned char *buf;
|
||||||
|
|
||||||
f =_eet_memfile_write_open(&d, &sz);
|
f =_eet_memfile_write_open(&d, &sz);
|
||||||
if (!f) return NULL;
|
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;
|
cinfo.in_color_space = JCS_RGB;
|
||||||
jpeg_set_defaults(&cinfo);
|
jpeg_set_defaults(&cinfo);
|
||||||
jpeg_set_quality(&cinfo, quality, TRUE);
|
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);
|
jpeg_start_compress(&cinfo, TRUE);
|
||||||
|
|
||||||
ptr = data;
|
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_finish_compress(&cinfo);
|
||||||
jpeg_destroy_compress(&cinfo);
|
jpeg_destroy_compress(&cinfo);
|
||||||
|
|
||||||
|
_eet_memfile_write_close(f);
|
||||||
*size = sz;
|
*size = sz;
|
||||||
if (buf) free(buf);
|
if (buf) free(buf);
|
||||||
_eet_memfile_write_close(f);
|
|
||||||
return d;
|
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;
|
unsigned char *d;
|
||||||
int *header;
|
int *header;
|
||||||
int sz1, sz2;
|
int sz1, sz2;
|
||||||
|
|
||||||
if (words_bigendian == -1)
|
if (words_bigendian == -1)
|
||||||
{
|
{
|
||||||
unsigned long int v;
|
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;
|
cinfo.in_color_space = JCS_RGB;
|
||||||
jpeg_set_defaults(&cinfo);
|
jpeg_set_defaults(&cinfo);
|
||||||
jpeg_set_quality(&cinfo, quality, TRUE);
|
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);
|
jpeg_start_compress(&cinfo, TRUE);
|
||||||
|
|
||||||
ptr = data;
|
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;
|
cinfo.in_color_space = JCS_GRAYSCALE;
|
||||||
jpeg_set_defaults(&cinfo);
|
jpeg_set_defaults(&cinfo);
|
||||||
jpeg_set_quality(&cinfo, quality, TRUE);
|
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);
|
jpeg_start_compress(&cinfo, TRUE);
|
||||||
|
|
||||||
ptr = data;
|
ptr = data;
|
||||||
|
|
|
@ -92,7 +92,8 @@ _eet_memfile_write_close(FILE *f)
|
||||||
{
|
{
|
||||||
int j;
|
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);
|
rewind(f);
|
||||||
(*(_eet_memfile_info[i].data)) = malloc(*(_eet_memfile_info[i].size));
|
(*(_eet_memfile_info[i].data)) = malloc(*(_eet_memfile_info[i].size));
|
||||||
if (!(*(_eet_memfile_info[i].data)))
|
if (!(*(_eet_memfile_info[i].data)))
|
||||||
|
|
Loading…
Reference in New Issue