ImgToWebp: add ability to use lossless compression

Good for pixel art
This commit is contained in:
Sebastian Krzyszkowiak 2019-01-24 23:57:23 +01:00
parent a411819d5a
commit e89f654559
No known key found for this signature in database
GPG key ID: E8F235CF3BDBC3FF
2 changed files with 15 additions and 5 deletions

View file

@ -14,20 +14,25 @@ if(CONVERT)
else()
set(resizecmd "")
endif()
GetFromAssetCache(${CACHE} ${DATADIR}/${file} "${QUALITY}-${RESIZE}-${PARAMS}" CACHED HASH)
if (LOSSLESS)
set(losslesscmd -define webp:lossless=true)
else()
set(losslesscmd "")
endif()
GetFromAssetCache(${CACHE} ${DATADIR}/${file} "${LOSSLESS}-${QUALITY}-${RESIZE}-${PARAMS}" CACHED HASH)
if (CACHED)
file(REMOVE ${DATADIR}/${file})
configure_file(${CACHED} ${DATADIR}/${filepath}.wbp COPYONLY)
unset(CACHED)
else()
separate_arguments(PARAMS)
set(CONVERT_CMD ${CONVERT} ${file} -quality ${QUALITY} ${PARAMS} ${resizecmd} webp:${filepath}.wbp)
set(CONVERT_CMD ${CONVERT} ${file} -quality ${QUALITY} ${PARAMS} ${resizecmd} ${losslesscmd} webp:${filepath}.wbp)
execute_process(COMMAND ${CONVERT_CMD} WORKING_DIRECTORY ${DATADIR} RESULT_VARIABLE CONVERT_RESULT)
if(CONVERT_RESULT)
message(WARNING "ERROR: ${CONVERT_RESULT}")
else()
file(REMOVE ${DATADIR}/${file})
AddToAssetCache(${CACHE} ${HASH} "${QUALITY}-${RESIZE}-${PARAMS}" "${DATADIR}/${filepath}.wbp")
AddToAssetCache(${CACHE} ${HASH} "${LOSSLESS}-${QUALITY}-${RESIZE}-${PARAMS}" "${DATADIR}/${filepath}.wbp")
endif()
endif()
endif()

View file

@ -330,13 +330,18 @@ if (NOT LIBSUPERDERPY_CONFIG_INCLUDED)
COMMAND ${CMAKE_COMMAND} -DDATADIR=${ASSET_PIPELINE_DATADIR} -DCACHE="${CMAKE_SOURCE_DIR}/.assetcache" -DBITRATE=${FLACTOOPUS_BITRATE} -P ${LIBSUPERDERPY_DIR}/cmake/FlacToOpus.cmake
USES_TERMINAL)
set(IMGTOWEBP_QUALITY "75" CACHE STRING "Quality of resulting WebP files")
option(IMGTOWEBP_LOSSLESS "Use lossless WebP compression" OFF)
if(IMGTOWEBP_LOSSLESS)
set(IMGTOWEBP_QUALITY "100" CACHE STRING "Quality of resulting WebP files")
else(IMGTOWEBP_LOSSLESS)
set(IMGTOWEBP_QUALITY "75" CACHE STRING "Quality of resulting WebP files")
endif(IMGTOWEBP_LOSSLESS)
set(IMGTOWEBP_RESIZE "" CACHE STRING "Value passed as -resize to ImageMagick (no resizing when empty)")
set(IMGTOWEBP_PARAMS "" CACHE STRING "Additional ImageMagick parameters")
add_custom_target(${LIBSUPERDERPY_GAMENAME}_img_to_webp
DEPENDS ${ASSET_PIPELINE_DEPEND}
COMMAND ${CMAKE_COMMAND} -DQUALITY="${IMGTOWEBP_QUALITY}" -DRESIZE="${IMGTOWEBP_RESIZE}" -DPARAMS="${IMGTOWEBP_PARAMS}" -DCACHE="${CMAKE_SOURCE_DIR}/.assetcache" -DDATADIR=${ASSET_PIPELINE_DATADIR} -P ${LIBSUPERDERPY_DIR}/cmake/ImgToWebp.cmake
COMMAND ${CMAKE_COMMAND} -DQUALITY="${IMGTOWEBP_QUALITY}" -DRESIZE="${IMGTOWEBP_RESIZE}" -DPARAMS="${IMGTOWEBP_PARAMS}" -DCACHE="${CMAKE_SOURCE_DIR}/.assetcache" -DLOSSLESS="${IMGTOWEBP_LOSSLESS}" -DDATADIR=${ASSET_PIPELINE_DATADIR} -P ${LIBSUPERDERPY_DIR}/cmake/ImgToWebp.cmake
USES_TERMINAL)
endif(ANDROID OR EMSCRIPTEN)