Thumbnail cache file format depending on existance of alpha layer

Use PNG if image has alpha layer, JPG if not. Fixes issue #209
This commit is contained in:
Bert Münnich 2015-07-22 21:08:00 +02:00
parent 9264a65c19
commit d8114e841c
2 changed files with 9 additions and 5 deletions

View File

@ -1,4 +1,4 @@
VERSION := git-20150518 VERSION := git-20150722
PREFIX := /usr/local PREFIX := /usr/local
MANPREFIX := $(PREFIX)/share/man MANPREFIX := $(PREFIX)/share/man

View File

@ -48,9 +48,9 @@ char* tns_cache_filepath(const char *filepath)
if (strncmp(filepath, cache_dir, strlen(cache_dir)) != 0) { if (strncmp(filepath, cache_dir, strlen(cache_dir)) != 0) {
/* don't cache images inside the cache directory! */ /* don't cache images inside the cache directory! */
len = strlen(cache_dir) + strlen(filepath) + 6; len = strlen(cache_dir) + strlen(filepath) + 2;
cfile = (char*) s_malloc(len); cfile = (char*) s_malloc(len);
snprintf(cfile, len, "%s/%s.jpg", cache_dir, filepath + 1); snprintf(cfile, len, "%s/%s", cache_dir, filepath + 1);
} }
return cfile; return cfile;
} }
@ -101,8 +101,12 @@ void tns_cache_write(Imlib_Image im, const char *filepath, bool force)
} }
if (err == 0) { if (err == 0) {
imlib_context_set_image(im); imlib_context_set_image(im);
if (imlib_image_has_alpha()) {
imlib_image_set_format("png");
} else {
imlib_image_set_format("jpg"); imlib_image_set_format("jpg");
imlib_image_attach_data_value("quality", NULL, 90, NULL); imlib_image_attach_data_value("quality", NULL, 90, NULL);
}
imlib_save_image_with_error_return(cfile, &err); imlib_save_image_with_error_return(cfile, &err);
} }
if (err == 0) { if (err == 0) {