diff options
author | Bert Münnich <ber.t@posteo.de> | 2015-07-22 21:08:00 +0200 |
---|---|---|
committer | Bert Münnich <ber.t@posteo.de> | 2015-07-22 21:08:00 +0200 |
commit | d8114e841c5b5933a655a3ec728cedd37b86d27d (patch) | |
tree | 2be7e565f37243daac529efc037d50c17e1d5e08 | |
parent | 9264a65c192c9678fa4a048fdbb177ebf487c6b9 (diff) |
Thumbnail cache file format depending on existance of alpha layer
Use PNG if image has alpha layer, JPG if not. Fixes issue #209
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | thumbs.c | 12 |
2 files changed, 9 insertions, 5 deletions
@@ -1,4 +1,4 @@ -VERSION := git-20150518 +VERSION := git-20150722 PREFIX := /usr/local MANPREFIX := $(PREFIX)/share/man @@ -48,9 +48,9 @@ char* tns_cache_filepath(const char *filepath) if (strncmp(filepath, cache_dir, strlen(cache_dir)) != 0) { /* 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); - snprintf(cfile, len, "%s/%s.jpg", cache_dir, filepath + 1); + snprintf(cfile, len, "%s/%s", cache_dir, filepath + 1); } return cfile; } @@ -101,8 +101,12 @@ void tns_cache_write(Imlib_Image im, const char *filepath, bool force) } if (err == 0) { imlib_context_set_image(im); - imlib_image_set_format("jpg"); - imlib_image_attach_data_value("quality", NULL, 90, NULL); + if (imlib_image_has_alpha()) { + imlib_image_set_format("png"); + } else { + imlib_image_set_format("jpg"); + imlib_image_attach_data_value("quality", NULL, 90, NULL); + } imlib_save_image_with_error_return(cfile, &err); } if (err == 0) { |