This installs minimalist heif-info & heif-convert that can only decode HEIC and encode JPEG.
./install-heic.sh
| /artifacts/ |
| FROM alpine:latest as build | |
| ARG HEV=1.20.2 | |
| ARG TB=https://github.com/strukturag/libheif/releases/download/v$HEV/libheif-$HEV.tar.gz | |
| RUN until \ | |
| wget --no-verbose --output-document=- $TB |tar -xzf- \ | |
| ; do sleep 1 ; done | |
| RUN apk add --no-cache \ | |
| cmake \ | |
| g++ \ | |
| libde265-dev \ | |
| libde265-static \ | |
| libjpeg-turbo-dev \ | |
| libjpeg-turbo-static \ | |
| make \ | |
| && : | |
| WORKDIR /libheif-$HEV | |
| RUN cmake -B build \ | |
| -DCMAKE_EXE_LINKER_FLAGS="-static" \ | |
| -DLIBDE265_LIBRARY=/usr/lib/libde265.a \ | |
| -DJPEG_LIBRARY=/usr/lib/libjpeg.a \ | |
| -DBUILD_SHARED_LIBS=OFF \ | |
| -DBUILD_TESTING=OFF \ | |
| -DENABLE_PLUGIN_LOADING=OFF \ | |
| -DWITH_JPEG_ENCODER=ON \ | |
| -DWITH_LIBSHARPYUV=OFF \ | |
| -DWITH_X265=OFF \ | |
| -DWITH_OpenH264_DECODER=OFF \ | |
| -DWITH_AOM_DECODER=OFF \ | |
| -DWITH_AOM_ENCODER=OFF \ | |
| -DWITH_GDK_PIXBUF=OFF \ | |
| -DCMAKE_DISABLE_FIND_PACKAGE_TIFF=TRUE \ | |
| -DCMAKE_DISABLE_FIND_PACKAGE_PNG=TRUE \ | |
| -DCMAKE_DISABLE_FIND_PACKAGE_SDL2=TRUE \ | |
| -DCMAKE_DISABLE_FIND_PACKAGE_Doxygen=TRUE \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| && \ | |
| cmake --build build -j \ | |
| && \ | |
| cmake --install build | |
| FROM scratch AS heic-artifacts | |
| COPY --from=build /usr/local / |
| #! /usr/bin/env bash | |
| # | |
| # build static libheic in a docker container & install in user home | |
| # | |
| set -e | |
| set -u | |
| set -x | |
| main() { | |
| if ! hash docker | |
| then | |
| "ERROR: Need docker to build." | |
| exit 1 | |
| fi >&2 | |
| docker buildx build --progress=plain --tag build-heic \ | |
| --output type=local,dest=./artifacts \ | |
| . | |
| cp -fal artifacts/bin/heif-* ~/bin/ | |
| } | |
| main | |
| exit |