novomesk / qt-jpegxl-image-plugin Goto Github PK
View Code? Open in Web Editor NEWQt plug-in to allow Qt and KDE based applications to read/write JXL images.
License: GNU General Public License v3.0
Qt plug-in to allow Qt and KDE based applications to read/write JXL images.
License: GNU General Public License v3.0
Hi!
I'm getting an error during compilation due to something called "QColorSpace".
./build_libqjpegxl_dynamic.sh
g++ -c -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -O2 -std=c++1z -Wall -W -Wvla -Wdate-time -Wshift-overflow=2 -Wduplicated-cond -Wno-stringop-overflow -Wno-deprecated-copy -Wno-redundant-move -Wno-format-overflow -Wno-init-list-lifetime -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_PLUGIN -DQT_GUI_LIB -DQT_CORE_LIB -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I.moc -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o .obj/qjpegxlhandler.o src/qjpegxlhandler.cpp
src/qjpegxlhandler.cpp:9:10: fatal error: QColorSpace: No such file or directory
9 | #include <QColorSpace>
| ^~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:373: .obj/qjpegxlhandler.o] Error 1
Failed to build libqjpegxl.so
I'm running Kubuntu 20.04.
Am I missing some dependencies? Or is qtbase5-dev the wrong package after all?
Edit: I forgot to mention that I managed to compile libjxl without errors and it works without any issues.
Environment:
Steps to reproduce:
cjxl
.ICC Rendering Intent Test (cLUT only).jxl
) by gwenview
.gwenview
.Observed result:
Although the JXL is displayed, the colors are wrong because the ICC profile cannot be applied.
JPG and PNG versions have no such problem.
Console output:
qt.gui.icc: fromIccProfile: Unsupported ICC profile - not three component matrix based
invalid color profile created
full image, format=4
I'm building qimgv/yacreader along with this plugin in msys2/ucrt64 and msys2/clang64 environments. If the plugin is based on libjxl v0.8.2, it works fine, but if libjxl v0.9.1, the apps simply can't recognize jxl images.
I build the plugin in msys2/ucrt64
using cmake
and Qt 6.5.1 since I can no longer do it with qmake-qt6
. I use this plugin along with qimgv
built in the same environment. Lately I've noticed that everything works correctly on jpeg transcoded jxls, but qimgv
crashes on vardct and modular jxls. When building with qmake-qt6
this problem was not observed. Any suggestions?
Part of my script:
# build qjpegxl
if [[ $QJXL == 1 ]] ; then
printf "\n${MGNT}:: Prepare libjxl ::${RST}\n"
if [[ ! -d libjxl ]]; then
git clone --branch v0.8.2 --depth 1 https://github.com/libjxl/libjxl.git
cd libjxl
else
cd libjxl
git pull
fi
cd third_party
if [[ -z "$(ls -A skcms)" ]]; then git clone --depth 1 https://skia.googlesource.com/skcms
else cd skcms; git pull; cd ..; fi
if [[ -z "$(ls -A sjpeg)" ]]; then git clone --depth 1 https://github.com/webmproject/sjpeg.git
else cd sjpeg; git pull; cd ..; fi
cd ..
if [[ -z "$(ls -A testdata)" ]]; then git clone --depth 1 https://github.com/libjxl/testdata
else cd testdata; git pull; cd ..; fi
# build libjxl
printf "\n${MGNT}:: Build libjxl ::${RST}\n"
rm -rf build
cmake -B build -G Ninja -S ./ \
-DCMAKE_INSTALL_PREFIX="$EXTDIR" \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=OFF \
-DJPEGXL_ENABLE_TOOLS=OFF \
-DJPEGXL_ENABLE_DOXYGEN=OFF \
-DJPEGXL_ENABLE_MANPAGES=OFF \
-DJPEGXL_ENABLE_BENCHMARK=OFF \
-DJPEGXL_ENABLE_EXAMPLES=OFF \
-DJPEGXL_ENABLE_JNI=OFF \
-DJPEGXL_ENABLE_OPENEXR=OFF \
-DJPEGXL_WARNINGS_AS_ERRORS=OFF \
-DJPEGXL_FORCE_SYSTEM_BROTLI=ON \
-DJPEGXL_FORCE_SYSTEM_LCMS2=ON \
-DJPEGXL_FORCE_SYSTEM_HWY=ON \
-DCMAKE_C_FLAGS="$CFL" -DCMAKE_CXX_FLAGS="$CFL" -DCMAKE_EXE_LINKER_FLAGS="$LFL" \
-Wno-dev
ninja install -C build
cd ..
# build qjpegxl
cd qimgv
printf "\n${MGNT}:: Build qjpegxl-qt6 ::${RST}\n"
if [[ ! -d qt-jpegxl-image-plugin ]]; then
git clone --depth 1 https://github.com/novomesk/qt-jpegxl-image-plugin.git
cd qt-jpegxl-image-plugin
sed -i 's|set(REQUIRED_QT_VERSION 5.14.0)|set(REQUIRED_QT_VERSION 6.5.1)|' CMakeLists.txt
sed -i 's|${QT_MAJOR_VERSION}|6|' CMakeLists.txt
sed -i 's|${QT_MAJOR_VERSION}|6|' src/CMakeLists.txt
fi
rm -rf build
cmake -B build -G Ninja -S ./ -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$EXTDIR" \
-DCMAKE_C_FLAGS="$CFL" -DCMAKE_CXX_FLAGS="$CFL" -DCMAKE_EXE_LINKER_FLAGS="$LFL"
ninja -C build
cd ../..
fi
After installing the plugin, this Qt/C++ code crashes:
// grab a screenshot (X11) and save it to jxl format
QPixmap pixmap(qApp->primaryScreen()->grabWindow(0).copy());
pixmap.save("screenshot.jxl", "JXL");
Console output:
/build/libjxl/src/libjxl/lib/jxl/enc_ac_strategy.h:52: JXL_DASSERT: masking_field_row[by * masking_field_stride + bx] > 0
Illegal instruction (core dumped)
But this code works fine and correctly writes a jxl image:
// load existing png file into a QPixmap and save it as a new jxl file
QPixmap pixmap("myimage.png");
pixmap.save("myimage.jxl", "JXL");
Tested with both Qt5 and Qt6, with the same result.
System information:
OS: Arch Linux x86_64
Qt5: 5.15.2+kde+r211
Qt6: 6.1.2
libjxl: 0.5
Compiler: gcc 11.1.0
Try to build on msys2/clang64 with qt 6.5.0 and get an error:
Cloning into 'qt-jpegxl-image-plugin'...
remote: Enumerating objects: 36, done.
remote: Counting objects: 100% (36/36), done.
remote: Compressing objects: 100% (35/35), done.
remote: Total 36 (delta 2), reused 20 (delta 0), pack-reused 0
Receiving objects: 100% (36/36), 3.35 MiB | 1.99 MiB/s, done.
Resolving deltas: 100% (2/2), done.
D:/msys2/home/Gautama/yacr/qt-jpegxl-image-plugin/.qmake.conf:1: Cannot find feature qt_build_config
D:/msys2/home/Gautama/yacr/qt-jpegxl-image-plugin/.qmake.conf:1: Cannot find feature qt_build_config
Info: creating stash file D:\msys2\home\Gautama\yacr\qt-jpegxl-image-plugin\.qmake.stash
D:/msys2/home/Gautama/yacr/qt-jpegxl-image-plugin/qt-jpegxl-image-plugin.pro:13: Cannot find feature qt_plugin
clang++ -c -flto=thin -ffunction-sections -fdata-sections -march=native -mtune=native -O3 -pipe -O3 -Wall -Wextra -Wextra -Wno-ignored-attributes -fexceptions -DUNICODE -D_UNICODE -DWIN32 -DMINGW_HAS_SECURE_API=1 -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I. -I/home/Gautama/yacr/install/include -ID:/msys2/clang64/include/qt6 -ID:/msys2/clang64/include/qt6/QtGui -ID:/msys2/clang64/include/qt6/QtCore -I. -I/include -ID:/msys2/clang64/share/qt6/mkspecs/win32-clang-g++ -o qjpegxlhandler.o src/qjpegxlhandler.cpp
clang++ -flto=thin -ffunction-sections -fdata-sections -march=native -mtune=native -O3 -pipe -O3 -Wall -Wextra -Wextra -Wno-ignored-attributes -dM -E -o moc_predefs.h D:/msys2/clang64/share/qt6/mkspecs/features/data/dummy.cpp
'D:\msys2\clang64\share\qt6\bin\moc.exe' -DUNICODE -D_UNICODE -DWIN32 -DMINGW_HAS_SECURE_API=1 -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN --include D:/msys2/home/Gautama/yacr/qt-jpegxl-image-plugin/moc_predefs.h -ID:/msys2/clang64/share/qt6/mkspecs/win32-clang-g++ -ID:/msys2/home/Gautama/yacr/qt-jpegxl-image-plugin -ID:/home/Gautama/yacr/install/include -ID:/msys2/clang64/include/qt6 -ID:/msys2/clang64/include/qt6/QtGui -ID:/msys2/clang64/include/qt6/QtCore -ID:/msys2/clang64/include/c++/v1 -ID:/msys2/clang64/lib/clang/16/include -ID:/msys2/clang64/include src/main.cpp -o main.moc
clang++ -c -flto=thin -ffunction-sections -fdata-sections -march=native -mtune=native -O3 -pipe -O3 -Wall -Wextra -Wextra -Wno-ignored-attributes -fexceptions -DUNICODE -D_UNICODE -DWIN32 -DMINGW_HAS_SECURE_API=1 -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I. -I/home/Gautama/yacr/install/include -ID:/msys2/clang64/include/qt6 -ID:/msys2/clang64/include/qt6/QtGui -ID:/msys2/clang64/include/qt6/QtCore -I. -I/include -ID:/msys2/clang64/share/qt6/mkspecs/win32-clang-g++ -o main.o src/main.cpp
clang++ -flto=thin -Wl,--gc-sections -Wl,-s -Wl,-subsystem,windows -o qjpegxl.exe qjpegxlhandler.o main.o -L/home/Gautama/yacr/install/lib -ljxl -ljxl_threads -lbrotlicommon -lbrotlienc -lbrotlidec D:/msys2/clang64/lib/libQt6Gui.dll.a D:/msys2/clang64/lib/libQt6Core.dll.a -lmingw32 D:/msys2/clang64/lib/libQt6EntryPoint.a -lshell32
ld.lld: error: undefined symbol: qMain(int, char**)
>>> referenced by libQt6EntryPoint.a(qtentrypoint_win.cpp.obj):(qtEntryPoint())
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:73: qjpegxl.exe] Error 1
Any suggestions?
For some images, the results are very different from those from djxl. See example attached file (zipped because GitHub doesn't permit .jxl).
output.zip
Command used to create it: cjxl input.png output.jxl -m -Q 25 -s 9 -E 3 --noise=1 --lossy-palette --palette=0 --num_threads 16 -v
tobefree@tobefree-linux:~/software/gwenview-plugin-jpegxl$ ls
tobefree@tobefree-linux:~/software/gwenview-plugin-jpegxl$ git clone --depth 1 https://gitlab.com/wg1/jpeg-xl.git --recursive
Klone nach 'jpeg-xl' ...
remote: Enumerating objects: 755, done.
remote: Counting objects: 100% (755/755), done.
remote: Compressing objects: 100% (696/696), done.
remote: Total 755 (delta 123), reused 327 (delta 44), pack-reused 0
Empfange Objekte: 100% (755/755), 14.11 MiB | 8.51 MiB/s, fertig.
Löse Unterschiede auf: 100% (123/123), fertig.
Submodul 'third_party/IQA-optimization' (https://github.com/veluca93/IQA-optimization.git) für Pfad 'third_party/IQA-optimization' in die Konfiguration eingetragen.
Submodul 'third_party/brotli' (https://github.com/google/brotli) für Pfad 'third_party/brotli' in die Konfiguration eingetragen.
Submodul 'third_party/difftest_ng' (https://github.com/thorfdbg/difftest_ng.git) für Pfad 'third_party/difftest_ng' in die Konfiguration eingetragen.
Submodul 'third_party/googletest' (https://github.com/google/googletest) für Pfad 'third_party/googletest' in die Konfiguration eingetragen.
Submodul 'third_party/highway' (https://github.com/google/highway) für Pfad 'third_party/highway' in die Konfiguration eingetragen.
Submodul 'third_party/lcms' (https://github.com/mm2/Little-CMS) für Pfad 'third_party/lcms' in die Konfiguration eingetragen.
Submodul 'third_party/lodepng' (https://github.com/lvandeve/lodepng) für Pfad 'third_party/lodepng' in die Konfiguration eingetragen.
Submodul 'third_party/sjpeg' (https://github.com/webmproject/sjpeg.git) für Pfad 'third_party/sjpeg' in die Konfiguration eingetragen.
Submodul 'third_party/skcms' (https://skia.googlesource.com/skcms) für Pfad 'third_party/skcms' in die Konfiguration eingetragen.
Submodul 'third_party/vmaf' (https://github.com/Netflix/vmaf.git) für Pfad 'third_party/vmaf' in die Konfiguration eingetragen.
Klone nach '/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/third_party/IQA-optimization' ...
remote: Enumerating objects: 108, done.
remote: Counting objects: 100% (108/108), done.
remote: Compressing objects: 100% (82/82), done.
remote: Total 108 (delta 30), reused 99 (delta 21), pack-reused 0
Empfange Objekte: 100% (108/108), 410.81 KiB | 4.62 MiB/s, fertig.
Löse Unterschiede auf: 100% (30/30), fertig.
Klone nach '/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/third_party/brotli' ...
remote: Enumerating objects: 35, done.
remote: Counting objects: 100% (35/35), done.
remote: Compressing objects: 100% (34/34), done.
remote: Total 6102 (delta 6), reused 3 (delta 0), pack-reused 6067
Empfange Objekte: 100% (6102/6102), 30.71 MiB | 23.82 MiB/s, fertig.
Löse Unterschiede auf: 100% (3911/3911), fertig.
Klone nach '/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/third_party/difftest_ng' ...
remote: Enumerating objects: 158, done.
remote: Counting objects: 100% (158/158), done.
remote: Compressing objects: 100% (94/94), done.
remote: Total 1003 (delta 93), reused 100 (delta 61), pack-reused 845
Empfange Objekte: 100% (1003/1003), 712.01 KiB | 8.79 MiB/s, fertig.
Löse Unterschiede auf: 100% (740/740), fertig.
Klone nach '/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/third_party/googletest' ...
remote: Enumerating objects: 19, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 22224 (delta 3), reused 14 (delta 3), pack-reused 22205
Empfange Objekte: 100% (22224/22224), 8.56 MiB | 3.43 MiB/s, fertig.
Löse Unterschiede auf: 100% (16451/16451), fertig.
Klone nach '/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/third_party/highway' ...
remote: Enumerating objects: 26, done.
remote: Counting objects: 100% (26/26), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 1646 (delta 7), reused 7 (delta 7), pack-reused 1620
Empfange Objekte: 100% (1646/1646), 2.37 MiB | 11.84 MiB/s, fertig.
Löse Unterschiede auf: 100% (1249/1249), fertig.
Klone nach '/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/third_party/lcms' ...
remote: Enumerating objects: 105, done.
remote: Counting objects: 100% (105/105), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 5229 (delta 46), reused 65 (delta 25), pack-reused 5124
Empfange Objekte: 100% (5229/5229), 78.11 MiB | 4.22 MiB/s, fertig.
Löse Unterschiede auf: 100% (3735/3735), fertig.
Klone nach '/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/third_party/lodepng' ...
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 2610 (delta 0), reused 1 (delta 0), pack-reused 2603
Empfange Objekte: 100% (2610/2610), 1.60 MiB | 9.26 MiB/s, fertig.
Löse Unterschiede auf: 100% (1095/1095), fertig.
Klone nach '/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/third_party/sjpeg' ...
remote: Enumerating objects: 37, done.
remote: Counting objects: 100% (37/37), done.
remote: Compressing objects: 100% (31/31), done.
remote: Total 868 (delta 12), reused 18 (delta 6), pack-reused 831
Empfange Objekte: 100% (868/868), 2.63 MiB | 13.75 MiB/s, fertig.
Löse Unterschiede auf: 100% (552/552), fertig.
Klone nach '/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/third_party/skcms' ...
remote: Finding sources: 100% (4573/4573)
remote: Total 4573 (delta 2083), reused 4573 (delta 2083)
Empfange Objekte: 100% (4573/4573), 12.84 MiB | 11.15 MiB/s, fertig.
Löse Unterschiede auf: 100% (2083/2083), fertig.
Klone nach '/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/third_party/vmaf' ...
remote: Enumerating objects: 60, done.
remote: Counting objects: 100% (60/60), done.
remote: Compressing objects: 100% (48/48), done.
remote: Total 15196 (delta 33), reused 21 (delta 12), pack-reused 15136
Empfange Objekte: 100% (15196/15196), 77.93 MiB | 9.36 MiB/s, fertig.
Löse Unterschiede auf: 100% (10797/10797), fertig.
Submodul-Pfad: 'third_party/IQA-optimization': '9a0d1d767d5237775aafa278a9929fbe88a07a48' ausgecheckt
Submodul-Pfad: 'third_party/brotli': '35ef5c554d888bef217d449346067de05e269b30' ausgecheckt
Submodul 'research/esaxx' (https://github.com/hillbig/esaxx) für Pfad 'third_party/brotli/research/esaxx' in die Konfiguration eingetragen.
Submodul 'research/libdivsufsort' (https://github.com/y-256/libdivsufsort.git) für Pfad 'third_party/brotli/research/libdivsufsort' in die Konfiguration eingetragen.
Klone nach '/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/third_party/brotli/research/esaxx' ...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 10 (delta 1), reused 0 (delta 0), pack-reused 7
Empfange Objekte: 100% (10/10), 95.99 KiB | 2.09 MiB/s, fertig.
Löse Unterschiede auf: 100% (1/1), fertig.
Klone nach '/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/third_party/brotli/research/libdivsufsort' ...
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 204 (delta 0), reused 1 (delta 0), pack-reused 203
Empfange Objekte: 100% (204/204), 85.04 KiB | 2.18 MiB/s, fertig.
Löse Unterschiede auf: 100% (127/127), fertig.
Submodul-Pfad: 'third_party/brotli/research/esaxx': 'ca7cb332011ec37a8436487f210f396b84bd8273' ausgecheckt
Submodul-Pfad: 'third_party/brotli/research/libdivsufsort': '5f60d6f026c30fb4ac296f696b3c8b0eb71bd428' ausgecheckt
Submodul-Pfad: 'third_party/difftest_ng': '3abc573d8bc03275d0f8e588afd53499cfd0f795' ausgecheckt
Submodul-Pfad: 'third_party/googletest': '0ea2d8f8fa1601abb9ce713b7414e7b86f90bc61' ausgecheckt
Submodul-Pfad: 'third_party/highway': '946a1b40233438a1b0363598a6deaa1628a01003' ausgecheckt
Submodul-Pfad: 'third_party/lcms': '65c63bf549d78253c14b30b3d62cb668bbbe612c' ausgecheckt
Submodul-Pfad: 'third_party/lodepng': '48e5364ef48ec2408f44c727657ac1b6703185f8' ausgecheckt
Submodul-Pfad: 'third_party/sjpeg': '868ab558fad70fcbe8863ba4e85179eeb81cc840' ausgecheckt
Submodul-Pfad: 'third_party/skcms': '64374756e03700d649f897dbd98c95e78c30c7da' ausgecheckt
Submodul-Pfad: 'third_party/vmaf': '6c3ca8faff9cac3679acafb134892b23cceb486a' ausgecheckt
tobefree@tobefree-linux:~/software/gwenview-plugin-jpegxl$ cd jpeg-xl
mkdir build
cd build
tobefree@tobefree-linux:~/software/gwenview-plugin-jpegxl/jpeg-xl/build$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DJPEGXL_ENABLE_PLUGINS=ON -DBUILD_TESTING=OFF -DJPEGXL_WARNINGS_AS_ERRORS=OFF -DJPEGXL_ENABLE_SJPEG=OFF ..
make
-- The C compiler identification is GNU 10.2.1
-- The CXX compiler identification is GNU 10.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test JPEGXL_EMSCRIPTEN
-- Performing Test JPEGXL_EMSCRIPTEN - Failed
-- CMAKE_SYSTEM_PROCESSOR is x86_64
-- Performing Test CXX_FUZZERS_SUPPORTED
-- Performing Test CXX_FUZZERS_SUPPORTED - Failed
-- Performing Test CXX_CONSTRUCTOR_ALIASES_SUPPORTED
-- Performing Test CXX_CONSTRUCTOR_ALIASES_SUPPORTED - Failed
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2")
-- tcmalloc version -- tcmalloc 2.8.0 disabled due to https://github.com/gperftools/gperftools/issues/1204
-- Compiled IDs C:GNU, C++:GNU
-- Performing Test HWY_EMSCRIPTEN
-- Performing Test HWY_EMSCRIPTEN - Failed
-- Performing Test BROTLI_EMSCRIPTEN
-- Performing Test BROTLI_EMSCRIPTEN - Failed
-- Compiler is not EMSCRIPTEN
-- Looking for log2
-- Looking for log2 - not found
-- Looking for log2
-- Looking for log2 - found
-- Performing Test CXX_WPSABI_SUPPORTED
-- Performing Test CXX_WPSABI_SUPPORTED - Success
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- Found GIF: /usr/lib/x86_64-linux-gnu/libgif.so (found suitable version "5.1.9", minimum required is "5")
-- Found JPEG: /usr/lib/x86_64-linux-gnu/libjpeg.so (found version "80")
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.11")
-- Found PNG: /usr/lib/x86_64-linux-gnu/libpng.so (found version "1.6.37")
-- Checking for module 'OpenEXR'
-- Found OpenEXR, version 2.5.4
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- Found Python: /usr/bin/python3.9 (found version "3.9.2") found components: Interpreter
-- Checking for module 'gdk-pixbuf-2.0>=2.38'
-- Found gdk-pixbuf-2.0, version 2.42.2
-- Checking for modules 'gimp-2.0>=2.10;gimpui-2.0>=2.10'
-- Found gimp-2.0, version 2.10.22
-- Found gimpui-2.0, version 2.10.22
-- Checking for module 'libwebp'
-- Found libwebp, version 0.6.1
-- Checking for module 'libavif'
-- No package 'libavif' found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/build
Scanning dependencies of target manpages
[ 1%] Generating cjxl.1
[ 1%] Generating djxl.1
[ 1%] Built target manpages
Scanning dependencies of target skcms
[ 1%] Building CXX object third_party/CMakeFiles/skcms.dir/skcms/skcms.cc.o
[ 2%] Linking CXX static library libskcms.a
[ 2%] Built target skcms
Scanning dependencies of target lodepng
[ 3%] Building CXX object third_party/CMakeFiles/lodepng.dir/lodepng/lodepng.cpp.o
[ 3%] Linking CXX static library liblodepng.a
[ 3%] Built target lodepng
Scanning dependencies of target hwy_list_targets
[ 4%] Building CXX object third_party/highway/CMakeFiles/hwy_list_targets.dir/hwy/tests/list_targets.cc.o
[ 4%] Linking CXX executable hwy_list_targets
[ 4%] Built target hwy_list_targets
Scanning dependencies of target hwy
[ 5%] Building CXX object third_party/highway/CMakeFiles/hwy.dir/contrib/image/image.cc.o
[ 5%] Building CXX object third_party/highway/CMakeFiles/hwy.dir/hwy/aligned_allocator.cc.o
[ 5%] Building CXX object third_party/highway/CMakeFiles/hwy.dir/hwy/nanobenchmark.cc.o
[ 6%] Building CXX object third_party/highway/CMakeFiles/hwy.dir/hwy/targets.cc.o
[ 6%] Linking CXX static library libhwy.a
Compiled HWY_TARGETS: AVX3 AVX2 SSE4 Scalar
HWY_BASELINE_TARGETS: Scalar
[ 6%] Built target hwy
Scanning dependencies of target hwy_benchmark
[ 7%] Building CXX object third_party/highway/CMakeFiles/hwy_benchmark.dir/hwy/examples/benchmark.cc.o
[ 7%] Building CXX object third_party/highway/CMakeFiles/hwy_benchmark.dir/hwy/nanobenchmark.cc.o
[ 7%] Linking CXX executable examples/hwy_benchmark
[ 7%] Built target hwy_benchmark
Scanning dependencies of target skeleton_static
[ 7%] Building CXX object third_party/highway/CMakeFiles/skeleton_static.dir/hwy/examples/skeleton_static_main.cc.o
[ 9%] Linking CXX executable examples/skeleton_static
[ 9%] Built target skeleton_static
Scanning dependencies of target skeleton
[ 9%] Building CXX object third_party/highway/CMakeFiles/skeleton.dir/hwy/examples/skeleton_main.cc.o
[ 9%] Building CXX object third_party/highway/CMakeFiles/skeleton.dir/hwy/examples/skeleton.cc.o
[ 10%] Linking CXX executable examples/skeleton
[ 10%] Built target skeleton
Scanning dependencies of target jxl_dec-obj
[ 11%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/ac_strategy.cc.o
[ 11%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/alpha.cc.o
[ 12%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/ans_common.cc.o
[ 12%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/aux_out.cc.o
[ 12%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/base/cache_aligned.cc.o
[ 13%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/base/data_parallel.cc.o
[ 13%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/base/descriptive_statistics.cc.o
[ 14%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/base/padded_bytes.cc.o
[ 14%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/base/status.cc.o
[ 14%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/base/time.cc.o
[ 15%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/blending.cc.o
[ 15%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/chroma_from_luma.cc.o
[ 17%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/coeff_order.cc.o
[ 17%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/color_encoding_internal.cc.o
[ 17%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/color_management.cc.o
[ 18%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/compressed_dc.cc.o
[ 18%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/convolve.cc.o
[ 19%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/dct_scales.cc.o
[ 19%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/dec_ans.cc.o
[ 19%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/dec_context_map.cc.o
[ 20%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/dec_external_image.cc.o
[ 20%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/dec_frame.cc.o
[ 21%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/dec_group.cc.o
In file included from /home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/lib/jxl/chroma_from_luma.h:32,
from /home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/lib/jxl/dec_group.h:27,
from /home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/lib/jxl/dec_group.cc:15:
/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/lib/jxl/dec_ans.h: In function ‘jxl::Status jxl::DecodeGroup(jxl::BitReader* __restrict__*, size_t, size_t, jxl::PassesDecoderState*, jxl::GroupDecCache*, size_t, jxl::ImageBundle*, size_t, bool, bool)’:
/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/lib/jxl/dec_ans.h:158:7: warning: ‘<anonymous>.jxl::ANSSymbolReader::log_alpha_size_’ may be used uninitialized in this function [-Wmaybe-uninitialized]
158 | class ANSSymbolReader {
| ^~~~~~~~~~~~~~~
/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/lib/jxl/dec_ans.h:158:7: warning: ‘<anonymous>.jxl::ANSSymbolReader::log_entry_size_’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/lib/jxl/dec_ans.h:158:7: warning: ‘<anonymous>.jxl::ANSSymbolReader::entry_size_minus_1_’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/lib/jxl/dec_ans.h:158:7: warning: ‘<anonymous>.jxl::ANSSymbolReader::num_special_distances_’ may be used uninitialized in this function [-Wmaybe-uninitialized]
/home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/lib/jxl/dec_ans.h:158:7: warning: ‘*((void*)&<anonymous> +104)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
[ 21%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/dec_group_border.cc.o
[ 21%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/dec_huffman.cc.o
[ 22%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/dec_modular.cc.o
[ 22%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/dec_noise.cc.o
[ 23%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/dec_patch_dictionary.cc.o
[ 23%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/dec_reconstruct.cc.o
[ 23%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/dec_transforms.cc.o
[ 25%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/dec_upsample.cc.o
[ 25%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/dec_xyb.cc.o
[ 26%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/decode.cc.o
[ 26%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/enc_bit_writer.cc.o
[ 26%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/entropy_coder.cc.o
[ 27%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/epf.cc.o
[ 27%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/fields.cc.o
[ 28%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/filters.cc.o
[ 28%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/frame_header.cc.o
[ 28%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/gaborish.cc.o
[ 29%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/gauss_blur.cc.o
[ 29%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/headers.cc.o
[ 30%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/huffman_table.cc.o
[ 30%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/huffman_tree.cc.o
[ 30%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/icc_codec.cc.o
[ 31%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/icc_codec_common.cc.o
[ 31%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/image.cc.o
[ 32%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/image_bundle.cc.o
[ 32%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/image_metadata.cc.o
[ 32%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/jpeg/dec_jpeg_data.cc.o
[ 34%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/jpeg/dec_jpeg_data_writer.cc.o
[ 34%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/jpeg/jpeg_data.cc.o
[ 35%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/linalg.cc.o
[ 35%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/loop_filter.cc.o
[ 35%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/luminance.cc.o
[ 36%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/memory_manager_internal.cc.o
[ 36%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/modular/encoding/encoding.cc.o
[ 37%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/modular/encoding/ma.cc.o
[ 37%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/modular/modular_image.cc.o
[ 37%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/modular/transform/transform.cc.o
[ 38%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/opsin_params.cc.o
[ 38%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/optimize.cc.o
[ 39%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/passes_state.cc.o
[ 39%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/progressive_split.cc.o
[ 39%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/quant_weights.cc.o
[ 40%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/quantizer.cc.o
[ 40%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/splines.cc.o
[ 42%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/toc.cc.o
[ 42%] Built target jxl_dec-obj
Scanning dependencies of target jxl_threads-static
[ 42%] Building CXX object lib/CMakeFiles/jxl_threads-static.dir/threads/thread_parallel_runner.cc.o
[ 43%] Building CXX object lib/CMakeFiles/jxl_threads-static.dir/threads/thread_parallel_runner_internal.cc.o
[ 43%] Linking CXX static library libjxl_threads.a
[ 43%] Built target jxl_threads-static
Scanning dependencies of target jxl_enc-obj
[ 43%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/butteraugli/butteraugli.cc.o
[ 44%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/butteraugli_wrapper.cc.o
[ 44%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/dec_file.cc.o
[ 45%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_ac_strategy.cc.o
[ 45%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_adaptive_quantization.cc.o
[ 45%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_ans.cc.o
[ 46%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_ar_control_field.cc.o
[ 46%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_butteraugli_comparator.cc.o
[ 47%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_butteraugli_pnorm.cc.o
[ 47%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_cache.cc.o
[ 47%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_chroma_from_luma.cc.o
[ 48%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_cluster.cc.o
[ 48%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_coeff_order.cc.o
[ 50%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_comparator.cc.o
[ 50%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_context_map.cc.o
[ 50%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_detect_dots.cc.o
[ 51%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_dot_dictionary.cc.o
[ 51%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_external_image.cc.o
[ 52%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_fast_heuristics.cc.o
[ 52%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_file.cc.o
[ 52%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_frame.cc.o
[ 53%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_group.cc.o
[ 53%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_heuristics.cc.o
[ 54%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_huffman.cc.o
[ 54%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_icc_codec.cc.o
[ 54%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_modular.cc.o
[ 55%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_noise.cc.o
[ 55%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_patch_dictionary.cc.o
[ 56%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_quant_weights.cc.o
[ 56%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_splines.cc.o
[ 56%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_toc.cc.o
[ 57%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_transforms.cc.o
[ 57%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/enc_xyb.cc.o
[ 59%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/encode.cc.o
[ 59%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/jpeg/enc_jpeg_data.cc.o
[ 59%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/jpeg/enc_jpeg_data_reader.cc.o
[ 60%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/jpeg/enc_jpeg_huffman_decode.cc.o
[ 60%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/modular/encoding/enc_encoding.cc.o
[ 60%] Built target jxl_enc-obj
Scanning dependencies of target jxl_threads
[ 60%] Building CXX object lib/CMakeFiles/jxl_threads.dir/threads/thread_parallel_runner.cc.o
[ 60%] Building CXX object lib/CMakeFiles/jxl_threads.dir/threads/thread_parallel_runner_internal.cc.o
[ 61%] Linking CXX shared library ../libjxl_threads.so
[ 61%] Built target jxl_threads
Scanning dependencies of target brotlicommon-static
[ 62%] Building C object third_party/brotli/CMakeFiles/brotlicommon-static.dir/c/common/dictionary.c.o
[ 62%] Building C object third_party/brotli/CMakeFiles/brotlicommon-static.dir/c/common/transform.c.o
[ 63%] Linking C static library libbrotlicommon-static.a
[ 63%] Built target brotlicommon-static
Scanning dependencies of target brotlidec-static
[ 63%] Building C object third_party/brotli/CMakeFiles/brotlidec-static.dir/c/dec/bit_reader.c.o
[ 63%] Building C object third_party/brotli/CMakeFiles/brotlidec-static.dir/c/dec/decode.c.o
[ 64%] Building C object third_party/brotli/CMakeFiles/brotlidec-static.dir/c/dec/huffman.c.o
[ 64%] Building C object third_party/brotli/CMakeFiles/brotlidec-static.dir/c/dec/state.c.o
[ 65%] Linking C static library libbrotlidec-static.a
[ 65%] Built target brotlidec-static
Scanning dependencies of target brotlienc-static
[ 67%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/backward_references.c.o
[ 67%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/backward_references_hq.c.o
[ 67%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/bit_cost.c.o
[ 68%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/block_splitter.c.o
[ 68%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/brotli_bit_stream.c.o
[ 69%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/cluster.c.o
[ 69%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/compress_fragment.c.o
[ 69%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/compress_fragment_two_pass.c.o
[ 70%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/dictionary_hash.c.o
[ 70%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/encode.c.o
[ 71%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/encoder_dict.c.o
[ 71%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/entropy_encode.c.o
[ 71%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/histogram.c.o
[ 72%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/literal_cost.c.o
[ 72%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/memory.c.o
[ 73%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/metablock.c.o
[ 73%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/static_dict.c.o
[ 73%] Building C object third_party/brotli/CMakeFiles/brotlienc-static.dir/c/enc/utf8_util.c.o
[ 75%] Linking C static library libbrotlienc-static.a
[ 75%] Built target brotlienc-static
Scanning dependencies of target jxl_dec-static
[ 75%] Linking CXX static library libjxl_dec.a
[ 75%] Built target jxl_dec-static
Scanning dependencies of target jxl-static
[ 75%] Linking CXX static library libjxl.a
[ 75%] Built target jxl-static
Scanning dependencies of target jxl_extras-static
[ 76%] Building CXX object lib/CMakeFiles/jxl_extras-static.dir/extras/codec.cc.o
[ 76%] Building CXX object lib/CMakeFiles/jxl_extras-static.dir/extras/codec_pgx.cc.o
[ 76%] Building CXX object lib/CMakeFiles/jxl_extras-static.dir/extras/codec_png.cc.o
[ 77%] Building CXX object lib/CMakeFiles/jxl_extras-static.dir/extras/codec_pnm.cc.o
[ 77%] Building CXX object lib/CMakeFiles/jxl_extras-static.dir/extras/codec_psd.cc.o
[ 78%] Building CXX object lib/CMakeFiles/jxl_extras-static.dir/extras/tone_mapping.cc.o
[ 78%] Building CXX object lib/CMakeFiles/jxl_extras-static.dir/extras/codec_gif.cc.o
[ 78%] Building CXX object lib/CMakeFiles/jxl_extras-static.dir/extras/codec_jpg.cc.o
[ 79%] Building CXX object lib/CMakeFiles/jxl_extras-static.dir/extras/codec_apng.cc.o
[ 79%] Building CXX object lib/CMakeFiles/jxl_extras-static.dir/extras/codec_exr.cc.o
[ 80%] Linking CXX static library libjxl_extras-static.a
[ 80%] Built target jxl_extras-static
Scanning dependencies of target jxl_dec
[ 80%] Linking CXX shared library ../libjxl_dec.so
[ 80%] Built target jxl_dec
Scanning dependencies of target jxl
[ 81%] Linking CXX shared library ../libjxl.so
[ 81%] Built target jxl
Scanning dependencies of target encode_oneshot
[ 81%] Building CXX object examples/CMakeFiles/encode_oneshot.dir/encode_oneshot.cc.o
[ 82%] Linking CXX executable encode_oneshot
[ 82%] Built target encode_oneshot
Scanning dependencies of target jxlinfo
[ 82%] Building C object examples/CMakeFiles/jxlinfo.dir/jxlinfo.c.o
[ 82%] Linking C executable jxlinfo
[ 82%] Built target jxlinfo
Scanning dependencies of target decode_oneshot
[ 84%] Building CXX object examples/CMakeFiles/decode_oneshot.dir/decode_oneshot.cc.o
[ 84%] Linking CXX executable decode_oneshot
[ 84%] Built target decode_oneshot
Scanning dependencies of target pixbufloader-jxl
[ 84%] Building C object plugins/gdk-pixbuf/CMakeFiles/pixbufloader-jxl.dir/pixbufloader-jxl.c.o
[ 85%] Linking CXX shared library libpixbufloader-jxl.so
[ 85%] Built target pixbufloader-jxl
Scanning dependencies of target file-jxl
[ 85%] Building CXX object plugins/gimp/CMakeFiles/file-jxl.dir/file-jxl-load.cc.o
[ 85%] Building CXX object plugins/gimp/CMakeFiles/file-jxl.dir/file-jxl-save.cc.o
[ 86%] Building CXX object plugins/gimp/CMakeFiles/file-jxl.dir/file-jxl.cc.o
[ 86%] Linking CXX executable file-jxl
[ 86%] Built target file-jxl
Scanning dependencies of target box
[ 86%] Building CXX object tools/box/CMakeFiles/box.dir/box.cc.o
[ 86%] Linking CXX static library libbox.a
[ 86%] Built target box
Scanning dependencies of target jxl_tool
[ 86%] Building CXX object tools/CMakeFiles/jxl_tool.dir/cmdline.cc.o
[ 87%] Building CXX object tools/CMakeFiles/jxl_tool.dir/cpu/cpu.cc.o
[ 87%] Building CXX object tools/CMakeFiles/jxl_tool.dir/cpu/os_specific.cc.o
[ 88%] Linking CXX static library libjxl_tool.a
[ 88%] Built target jxl_tool
Scanning dependencies of target benchmark_xl
[ 88%] Building CXX object tools/CMakeFiles/benchmark_xl.dir/benchmark/benchmark_xl.cc.o
[ 88%] Building CXX object tools/CMakeFiles/benchmark_xl.dir/benchmark/benchmark_args.cc.o
[ 89%] Building CXX object tools/CMakeFiles/benchmark_xl.dir/benchmark/benchmark_codec.cc.o
[ 89%] Building CXX object tools/CMakeFiles/benchmark_xl.dir/benchmark/benchmark_file_io.cc.o
[ 90%] Building CXX object tools/CMakeFiles/benchmark_xl.dir/benchmark/benchmark_stats.cc.o
[ 90%] Building CXX object tools/CMakeFiles/benchmark_xl.dir/benchmark/benchmark_utils.cc.o
[ 90%] Building CXX object tools/CMakeFiles/benchmark_xl.dir/benchmark/benchmark_codec_custom.cc.o
[ 92%] Building CXX object tools/CMakeFiles/benchmark_xl.dir/benchmark/benchmark_codec_jxl.cc.o
[ 92%] Building CXX object tools/CMakeFiles/benchmark_xl.dir/benchmark/benchmark_codec_png.cc.o
[ 93%] Building CXX object tools/CMakeFiles/benchmark_xl.dir/codec_config.cc.o
[ 93%] Building CXX object tools/CMakeFiles/benchmark_xl.dir/speed_stats.cc.o
[ 93%] Building CXX object tools/CMakeFiles/benchmark_xl.dir/__/third_party/dirent.cc.o
[ 94%] Building CXX object tools/CMakeFiles/benchmark_xl.dir/benchmark/benchmark_codec_jpeg.cc.o
[ 94%] Building CXX object tools/CMakeFiles/benchmark_xl.dir/benchmark/benchmark_codec_webp.cc.o
[ 95%] Linking CXX executable benchmark_xl
[ 95%] Built target benchmark_xl
Scanning dependencies of target djxltool
[ 96%] Building CXX object tools/CMakeFiles/djxltool.dir/djxl.cc.o
[ 96%] Building CXX object tools/CMakeFiles/djxltool.dir/speed_stats.cc.o
[ 96%] Linking CXX static library libdjxltool.a
[ 96%] Built target djxltool
Scanning dependencies of target djxl
[ 96%] Building CXX object tools/CMakeFiles/djxl.dir/codec_config.cc.o
[ 97%] Building CXX object tools/CMakeFiles/djxl.dir/djxl_main.cc.o
[ 97%] Linking CXX executable djxl
[ 97%] Built target djxl
Scanning dependencies of target cjxltool
[ 97%] Building CXX object tools/CMakeFiles/cjxltool.dir/cjxl.cc.o
[ 97%] Building CXX object tools/CMakeFiles/cjxltool.dir/codec_config.cc.o
[ 98%] Building CXX object tools/CMakeFiles/cjxltool.dir/speed_stats.cc.o
[ 98%] Linking CXX static library libcjxltool.a
[ 98%] Built target cjxltool
Scanning dependencies of target cjxl
[ 98%] Building CXX object tools/CMakeFiles/cjxl.dir/cjxl_main.cc.o
[100%] Linking CXX executable cjxl
[100%] Built target cjxl
tobefree@tobefree-linux:~/software/gwenview-plugin-jpegxl/jpeg-xl/build$ sudo make install
[sudo] Passwort für tobefree:
[ 1%] Built target manpages
[ 2%] Built target skcms
[ 3%] Built target lodepng
[ 4%] Built target hwy_list_targets
[ 6%] Built target hwy
[ 7%] Built target hwy_benchmark
[ 9%] Built target skeleton_static
[ 10%] Built target skeleton
[ 42%] Built target jxl_dec-obj
[ 43%] Built target jxl_threads-static
[ 60%] Built target jxl_enc-obj
[ 61%] Built target jxl_threads
[ 63%] Built target brotlicommon-static
[ 65%] Built target brotlidec-static
[ 75%] Built target brotlienc-static
[ 75%] Built target jxl_dec-static
[ 75%] Built target jxl-static
[ 80%] Built target jxl_extras-static
[ 80%] Built target jxl_dec
[ 81%] Built target jxl
[ 82%] Built target encode_oneshot
[ 82%] Built target jxlinfo
[ 84%] Built target decode_oneshot
[ 85%] Built target pixbufloader-jxl
[ 86%] Built target file-jxl
[ 86%] Built target box
[ 88%] Built target jxl_tool
[ 95%] Built target benchmark_xl
[ 96%] Built target djxltool
[ 97%] Built target djxl
[ 98%] Built target cjxltool
[100%] Built target cjxl
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/share/man/man1/cjxl.1
-- Installing: /usr/share/man/man1/djxl.1
-- Installing: /usr/lib/x86_64-linux-gnu/libhwy.a
-- Installing: /usr/include/contrib/image/image.h
-- Installing: /usr/include/contrib/math/math-inl.h
-- Installing: /usr/include/hwy/aligned_allocator.h
-- Installing: /usr/include/hwy/base.h
-- Installing: /usr/include/hwy/cache_control.h
-- Installing: /usr/include/hwy/foreach_target.h
-- Installing: /usr/include/hwy/highway.h
-- Installing: /usr/include/hwy/nanobenchmark.h
-- Installing: /usr/include/hwy/ops/arm_neon-inl.h
-- Installing: /usr/include/hwy/ops/scalar-inl.h
-- Installing: /usr/include/hwy/ops/set_macros-inl.h
-- Installing: /usr/include/hwy/ops/shared-inl.h
-- Installing: /usr/include/hwy/ops/wasm_128-inl.h
-- Installing: /usr/include/hwy/ops/x86_128-inl.h
-- Installing: /usr/include/hwy/ops/x86_256-inl.h
-- Installing: /usr/include/hwy/ops/x86_512-inl.h
-- Installing: /usr/include/hwy/targets.h
-- Installing: /usr/include/hwy/tests/test_util-inl.h
-- Installing: /usr/lib/x86_64-linux-gnu/pkgconfig/libhwy.pc
-- Installing: /usr/lib/x86_64-linux-gnu/pkgconfig/libhwy-test.pc
-- Installing: /usr/lib/x86_64-linux-gnu/libjxl.a
-- Installing: /usr/lib/x86_64-linux-gnu/libjxl_dec.a
-- Installing: /usr/lib/x86_64-linux-gnu/libjxl.so.0.3.7
-- Up-to-date: /usr/lib/x86_64-linux-gnu/libjxl.so.0
-- Up-to-date: /usr/lib/x86_64-linux-gnu/libjxl.so
-- Installing: /usr/lib/x86_64-linux-gnu/pkgconfig/libjxl.pc
-- Installing: /usr/lib/x86_64-linux-gnu/libjxl_threads.a
-- Installing: /usr/lib/x86_64-linux-gnu/libjxl_threads.so.0.3.7
-- Up-to-date: /usr/lib/x86_64-linux-gnu/libjxl_threads.so.0
-- Up-to-date: /usr/lib/x86_64-linux-gnu/libjxl_threads.so
-- Installing: /usr/lib/x86_64-linux-gnu/pkgconfig/libjxl_threads.pc
-- Up-to-date: /usr/include/jxl
-- Installing: /usr/include/jxl/butteraugli.h
-- Installing: /usr/include/jxl/butteraugli_cxx.h
-- Installing: /usr/include/jxl/codestream_header.h
-- Installing: /usr/include/jxl/color_encoding.h
-- Installing: /usr/include/jxl/decode.h
-- Installing: /usr/include/jxl/decode_cxx.h
-- Installing: /usr/include/jxl/encode.h
-- Installing: /usr/include/jxl/encode_cxx.h
-- Installing: /usr/include/jxl/memory_manager.h
-- Installing: /usr/include/jxl/parallel_runner.h
-- Installing: /usr/include/jxl/thread_parallel_runner.h
-- Installing: /usr/include/jxl/thread_parallel_runner_cxx.h
-- Installing: /usr/include/jxl/types.h
-- Up-to-date: /usr/include/jxl
-- Installing: /usr/include/jxl/jxl_export.h
-- Installing: /usr/include/jxl/jxl_threads_export.h
-- Installing: /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jxl.so
-- Installing: /usr/share/thumbnailers/jxl.thumbnailer
-- Installing: /usr/lib/gimp/2.0/plug-ins/file-jxl/file-jxl
-- Installing: /usr/share/mime/packages/image-jxl.xml
-- Installing: /usr/bin/cjxl
-- Installing: /usr/bin/djxl
-- Installing: /usr/bin/benchmark_xl
tobefree@tobefree-linux:~/software/gwenview-plugin-jpegxl/jpeg-xl/build$ ls /usr/share/mime/packages/
bluedevil-mime.xml freedesktop.org.xml image-jxl.xml kde5.xml keepassxc.xml kf5_network.xml kpatience.xml libreoffice.xml
tobefree@tobefree-linux:~/software/gwenview-plugin-jpegxl/jpeg-xl/build$ sudo update-mime-database /usr/share/mime/
tobefree@tobefree-linux:~/software/gwenview-plugin-jpegxl/jpeg-xl/build$ git clone --depth 1 https://github.com/novomesk/qt-jpegxl-image-plugin --recursive
Klone nach 'qt-jpegxl-image-plugin' ...
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 21 (delta 1), reused 10 (delta 0), pack-reused 0
Empfange Objekte: 100% (21/21), 96.63 KiB | 1.97 MiB/s, fertig.
Löse Unterschiede auf: 100% (1/1), fertig.
tobefree@tobefree-linux:~/software/gwenview-plugin-jpegxl/jpeg-xl/build$ cd qt-jpegxl-image-plugin
tobefree@tobefree-linux:~/software/gwenview-plugin-jpegxl/jpeg-xl/build/qt-jpegxl-image-plugin$ ./build_libqjpegxl_dynamic.sh
Info: creating stash file /home/tobefree/software/gwenview-plugin-jpegxl/jpeg-xl/build/qt-jpegxl-image-plugin/.qmake.stash
Project ERROR: No module claims plugin type 'imageformats'
qmake failed to produce Makefile
files.zip
Issue with encoding/decoding files with resolution that are not multiple of 8.
Check this thread on twitter with Jon Sneyers
https://twitter.com/jonsneyers/status/1343936322214498307
Original image and encoded jxl
I figured out how to make it and install plugin.
JPEG XL thumbnails don't show up and image viewers don't recognize it, please help)
I feel like learning the windows console, qt, git, and installing 10gb of visual studio to use 2 of its components + GIT + QT for Windows + all of its requirements, just to be able to view JPEG XL files in the nomacs image viewer, is a bit too much
Using the AUR package on Arch Linux, compilation fails with the following error
==> Starting build()...
Info: creating stash file /home/seadra/.cache/yay/qt-jpegxl-image-plugin-git/src/qt-jpegxl-image-plugin/.qmake.stash
g++ -c -pipe -D_FORTIFY_SOURCE=2 -march=native -mtune=native -O2 -pipe -fno-plt -std=c++1z -Wall -Wextra -Wvla -Wdate-time -Wshift-overflow=2 -Wduplicated-cond -Wno-stringop-overflow -Wno-format-overflow -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -D_REENTRANT -fPIC -DQT_NO_LINKED_LIST -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_PLUGIN -DQT_GUI_LIB -DQT_CORE_LIB -I. -I/usr/include/qt -I/usr/include/qt/QtGui -I/usr/include/qt/QtCore -I.moc -I/usr/lib/qt/mkspecs/linux-g++ -o .obj/qjpegxlhandler.o src/qjpegxlhandler.cpp
src/qjpegxlhandler.cpp: In member function ‘virtual bool QJpegXLHandler::write(const QImage&)’:
src/qjpegxlhandler.cpp:454:18: error: ‘JxlEncoderSetICCProfile’ was not declared in this scope; did you mean ‘JxlDecoderGetICCProfileSize’?
454 | status = JxlEncoderSetICCProfile(encoder, (const uint8_t *)iccprofile.constData(), iccprofile.size());
| ^~~~~~~~~~~~~~~~~~~~~~~
| JxlDecoderGetICCProfileSize
make: *** [Makefile:954: .obj/qjpegxlhandler.o] Error 1
Failed to build libqjpegxl.so
==> ERROR: A failure occurred in build().
Aborting...
error making: qt-jpegxl-image-plugin-git
libjpeg-xl 0.3.7-1 is installed from AUR as well.
I think I have a valid bug this time, as the .jxl decoded with the plugin (using nomacs) looks darker than the results from djxl and the original image.
cjxl -d 0.3
, using v0.2.0Following building guide as for now results in this errors on plugin build
> ./build_libqjpegxl_dynamic.sh ~/Vault/build/qt-jpegxl-image-plugin(main)@arch
Info: creating stash file /home/zen/Vault/build/qt-jpegxl-image-plugin/.qmake.stash
g++ -c -pipe -O2 -std=c++1z -Wall -Wextra -Wvla -Wdate-time -Wshift-overflow=2 -Wduplicated-cond -Wno-stringop-overflow -Wno-format-overflow -fvisibility=hidden -fvisibility-inlines-hidden -fno-exceptions -D_REENTRANT -fPIC -DQT_NO_LINKED_LIST -DQT_DEPRECATED_WARNINGS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_PLUGIN -DQT_GUI_LIB -DQT_CORE_LIB -I. -I/usr/include/qt -I/usr/include/qt/QtGui -I/usr/include/qt/QtCore -I.moc -I/usr/lib/qt/mkspecs/linux-g++ -o .obj/qjpegxlhandler.o src/qjpegxlhandler.cpp
src/qjpegxlhandler.cpp: In member function ‘virtual bool QJpegXLHandler::write(const QImage&)’:
src/qjpegxlhandler.cpp:488:9: error: ‘JxlColorEncodingSetToSRGB’ was not declared in this scope; did you mean ‘JxlColorEncoding’?
488 | JxlColorEncodingSetToSRGB(&color_profile, JXL_FALSE);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| JxlColorEncoding
src/qjpegxlhandler.cpp:530:17: error: ‘JxlBasicInfo’ {aka ‘struct JxlBasicInfo’} has no member named ‘num_color_channels’; did you mean ‘num_extra_channels’?
530 | output_info.num_color_channels = 3;
| ^~~~~~~~~~~~~~~~~~
| num_extra_channels
src/qjpegxlhandler.cpp:532:14: error: ‘JxlEncoderSetBasicInfo’ was not declared in this scope; did you mean ‘JxlDecoderGetBasicInfo’?
532 | status = JxlEncoderSetBasicInfo(encoder, &output_info);
| ^~~~~~~~~~~~~~~~~~~~~~
| JxlDecoderGetBasicInfo
src/qjpegxlhandler.cpp:540:14: error: ‘JxlEncoderSetColorEncoding’ was not declared in this scope
540 | status = JxlEncoderSetColorEncoding(encoder, &color_profile);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:712: .obj/qjpegxlhandler.o] Error 1
Failed to build libqjpegxl.so```
Could you please consider adding a release tag? I would like to package your plugin for Void Linux (draft PR at void-linux/void-packages#31397), which requires a release version.
.*
lib/
mkspecs/
plugins/
Makefile
Following the tutorial I have the .so built and installed but when going to edit the /usr/share/kservices5/imagethumbnail.desktop
file it seems it no longer exists. Apt-file says the package that should contain this file is kio-extras-data but the newest version of that package (22.08.2) no longer has it, atleast on KDE neon.
So I'm at the point where jpegxl files will display in Gwenview and have thumbnails generated in Dolphin but only after changing the files extension to .webp, otherwise it refuses to load. Do you know an alternate way of registering the filetype?
OS Info:
Operating System: KDE neon 5.26
KDE Plasma Version: 5.26.2
KDE Frameworks Version: 5.99.0
Qt Version: 5.15.6
When placing qjpegxl.dll (Dec 19, 2023) into C:\Program Files\YACReader\imageformats\ - and using this build:
https://github.com/YACReader/yacreader/releases/download/9.14.1/YACReader-v9.14.1.2402053-winx64-7z.exe
Comics containing .jxl images open correctly.
When placing qjpegxl6.dll (Dec 19, 2023) into C:\Program Files\YACReader\imageformats\ - and using this build:
https://github.com/YACReader/yacreader/releases/download/9.14.1/YACReader-v9.14.1.2402053-winx64-7z-qt6.exe
Comics containing .jxl open with an error message.
This may not be an issue on your end at all, but perhaps you or someone else knows why this is.
Of course, for now, it is easy enough to simply use the combination above which does work.
Thank you to anyone able to provide any assistance.
I am using this plugin with Gwenview to view a 16 MB JXL file (created with cjxl -s 3 -d 0
) (image and monitor are both 24-bit true color) , but Gwenview shows the spinner for around 6 seconds before the image is displayed.
Meanwhile, djxl
decodes the same file in less than 3 seconds.
Any idea why this happens?
(It seems that the reference software has an example viewer program, but I don't know how to compile the viewer, so I can't make a comparison between the reference viewer and this plugin.)
Hello again.
I have an interesting issue now: it seems like the QT-JXL plugin can't handle progressive images due to the way they are being decoded and shown.
Here is the error in question:
[INFO] Hi there [INFO] plugins dir set to: "/usr/lib64/nomacs-plugins" [INFO] local client created in: 1 ms [INFO] theme loaded from "/usr/local/share/nomacs/Image Lounge/themes/Light-Theme.css" [INFO] CSS loaded from: ":/nomacs/stylesheet.css" [INFO] Initialization takes: 80 ms [INFO] [DkImageLoader] 5 containers created in 0 ms [INFO] [DkImageLoader] after sorting: 0 ms [WARNING] Unexpected event 1024 instead of JXL_DEC_NEED_IMAGE_OUT_BUFFER [WARNING] Unexpected event 1024 instead of JXL_DEC_NEED_IMAGE_OUT_BUFFER [WARNING] [Basic Loader] could not load "/home/bluezakm/Pictures/Dark/Low BPP/D3.jxl"
Image link: https://cdn.discordapp.com/attachments/804324493420920833/816382162370560021/Screenshot_20210302_135048.png
It seems like since it's a progressive image, the plugin expects things to happen in a specific order, which might not always be the case: https://github.com/novomesk/qt-jpegxl-image-plugin/blob/main/src/qjpegxlhandler.cpp#L282
Some references on the manner: https://gitlab.com/wg1/jpeg-xl/-/blob/master/lib/include/jxl/decode.h#L285
https://gitlab.com/wg1/jpeg-xl/-/blob/master/lib/include/jxl/decode.h#L205
I hope this will be helpful. 👍
Built, installed, worked like a charm in gwenview. But not with Digikam. Someone who's struggling with this may benefit. Skimmed settings interface and here is the answer (It is not consistent with other Qt apps to require jxl to be enabled manually. What is the reasoning behind this, I wonder):
Settings -> Configure digikam -> Views -> Mime Types, add "jxl" (without brackets) to the Additional image file extensions field.
Now the jxl thumbnails should be displayed properly (you can try to add the jpegxl-logo.jxl from testfiles to digikam to test this right away).
I'd very much like if KDE would display the jpegxl by default without having to modify the files ourselves.
Thanks.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.