Merge branch 'master' into core-updates
[jackhill/guix/guix.git] / gnu / packages / image.scm
CommitLineData
e55354b8 1;;; GNU Guix --- Functional package management for GNU
0b8e89f6 2;;; Copyright © 2013, 2017 Ludovic Courtès <ludo@gnu.org>
451b5c5d 3;;; Copyright © 2013, 2015, 2016 Andreas Enge <andreas@enge.fr>
86fa2ea9 4;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
85a02905 5;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
f729a4d8 6;;; Copyright © 2014, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
0731a47c 7;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
fcc43c1f 8;;; Copyright © 2015 Amirouche Boubekki <amirouche@hypermove.net>
21122bd7 9;;; Copyright © 2014, 2017 John Darrington <jmd@gnu.org>
bc806b0c 10;;; Copyright © 2016, 2017, 2018 Leo Famulari <leo@famulari.name>
cd5e0843 11;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
bbf8832f 12;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
1fa3e336 13;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
2235abb2 14;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
3c8ba11a 15;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
4a78fd46 16;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
2f8b9c46 17;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
f2079849 18;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
da4dde61 19;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
62813c10 20;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
0d529a7c 21;;; Copyright © 2018 Pierre Neidhardt <ambrevar@gmail.com>
e55354b8
DT
22;;;
23;;; This file is part of GNU Guix.
24;;;
25;;; GNU Guix is free software; you can redistribute it and/or modify it
26;;; under the terms of the GNU General Public License as published by
27;;; the Free Software Foundation; either version 3 of the License, or (at
28;;; your option) any later version.
29;;;
30;;; GNU Guix is distributed in the hope that it will be useful, but
31;;; WITHOUT ANY WARRANTY; without even the implied warranty of
32;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33;;; GNU General Public License for more details.
34;;;
35;;; You should have received a copy of the GNU General Public License
36;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
37
38(define-module (gnu packages image)
39 #:use-module (gnu packages)
97039f6e 40 #:use-module (gnu packages algebra)
37e05d64 41 #:use-module (gnu packages assembly)
894e2cba 42 #:use-module (gnu packages autotools)
97039f6e 43 #:use-module (gnu packages boost)
ac257f12 44 #:use-module (gnu packages check)
e55354b8 45 #:use-module (gnu packages compression)
99828fa7 46 #:use-module (gnu packages documentation)
efa77baf 47 #:use-module (gnu packages fontutils)
0bd1097c
LF
48 ;; To provide gcc@5 and gcc@6, to work around <http://bugs.gnu.org/24703>.
49 #:use-module (gnu packages gcc)
1fa3e336 50 #:use-module (gnu packages gettext)
97039f6e 51 #:use-module (gnu packages ghostscript)
060ad3de 52 #:use-module (gnu packages gl)
023f0fb0 53 #:use-module (gnu packages glib)
ced7cc92 54 #:use-module (gnu packages graphics)
f2079849
JL
55 #:use-module (gnu packages gtk)
56 #:use-module (gnu packages lua)
97039f6e 57 #:use-module (gnu packages maths)
1fa3e336 58 #:use-module (gnu packages mcrypt)
97039f6e 59 #:use-module (gnu packages perl)
a5d4c96b 60 #:use-module (gnu packages photo)
efa77baf 61 #:use-module (gnu packages pkg-config)
97039f6e 62 #:use-module (gnu packages python)
efa77baf 63 #:use-module (gnu packages xml)
76d88cfa 64 #:use-module (gnu packages xorg)
84567657 65 #:use-module (gnu packages qt)
b5b73a82 66 #:use-module ((guix licenses) #:prefix license:)
e55354b8
DT
67 #:use-module (guix packages)
68 #:use-module (guix download)
ac2a38a5 69 #:use-module (guix git-download)
38c55e5c 70 #:use-module (guix build-system gnu)
e596ab0f 71 #:use-module (guix build-system cmake)
f2079849 72 #:use-module (guix build-system python)
eb60149e 73 #:use-module (guix build-system r)
2235abb2 74 #:use-module (guix build-system scons)
e596ab0f 75 #:use-module (srfi srfi-1))
e55354b8
DT
76
77(define-public libpng
78 (package
79 (name "libpng")
f19d9db5 80 (version "1.6.34")
e55354b8
DT
81 (source (origin
82 (method url-fetch)
a2f3c614 83 (uri (list (string-append "mirror://sourceforge/libpng/libpng16/"
21ef9843
MW
84 version "/libpng-" version ".tar.xz")
85 (string-append
86 "ftp://ftp.simplesystems.org/pub/libpng/png/src"
913059a1
EF
87 "/libpng16/libpng-" version ".tar.xz")
88 (string-append
89 "ftp://ftp.simplesystems.org/pub/libpng/png/src/history"
90 "/libpng16/libpng-" version ".tar.xz")))
e55354b8 91 (sha256
8fda37bc 92 (base32
f19d9db5 93 "1xjr0v34fyjgnhvaa1zixcpx5yvxcg4zwvfh0fyklfyfj86rc7ig"))))
e55354b8
DT
94 (build-system gnu-build-system)
95
96 ;; libpng.la says "-lz", so propagate it.
97 (propagated-inputs `(("zlib" ,zlib)))
98
99 (synopsis "Library for handling PNG files")
100 (description
101 "Libpng is the official PNG (Portable Network Graphics) reference
35b9e423 102library. It supports almost all PNG features and is extensible.")
e55354b8
DT
103 (license license:zlib)
104 (home-page "http://www.libpng.org/pub/png/libpng.html")))
105
e0958c2d 106;; libpng-apng should be updated when the APNG patch is released:
107;; <https://bugs.gnu.org/27556>
114a325e 108(define-public libpng-apng
109 (package
114a325e 110 (name "libpng-apng")
e0958c2d 111 (version "1.6.28")
112 (source
113 (origin
114 (method url-fetch)
115 (uri (list (string-append "mirror://sourceforge/libpng/libpng16/"
116 version "/libpng-" version ".tar.xz")
117 (string-append
118 "ftp://ftp.simplesystems.org/pub/libpng/png/src"
119 "/libpng16/libpng-" version ".tar.xz")
120 (string-append
121 "ftp://ftp.simplesystems.org/pub/libpng/png/src/history"
122 "/libpng16/libpng-" version ".tar.xz")))
123 (sha256
124 (base32
125 "0ylgyx93hnk38haqrh8prd3ax5ngzwvjqw5cxw7p9nxmwsfyrlyq"))))
126 (build-system gnu-build-system)
114a325e 127 (arguments
696f1d0f
LF
128 `(#:modules ((guix build gnu-build-system)
129 (guix build utils)
130 (srfi srfi-1))
131 #:phases
114a325e 132 (modify-phases %standard-phases
133 (add-after 'unpack 'patch-apng
134 (lambda* (#:key inputs #:allow-other-keys)
135 (define (apply-patch file)
136 (zero? (system* "patch" "-p1" "--force"
137 "--input" file)))
138 (let ((apng.gz (assoc-ref inputs "apng")))
139 (format #t "Applying APNG patch '~a'...~%"
140 apng.gz)
696f1d0f
LF
141 (and
142 (zero?
143 (system (string-append "gunzip < " apng.gz " > the-patch")))
144 (apply-patch "the-patch")))))
114a325e 145 (add-before 'configure 'no-checks
146 (lambda _
147 (substitute* "Makefile.in"
148 (("^scripts/symbols.chk") "")
149 (("check: scripts/symbols.chk") ""))
114a325e 150 #t)))))
151 (inputs
152 `(("apng" ,(origin
153 (method url-fetch)
154 (uri
155 (string-append "mirror://sourceforge/libpng-apng/libpng16/"
156 version "/libpng-" version "-apng.patch.gz"))
157 (sha256
158 (base32
e0958c2d 159 "0m5nv70n9903x3xzxw9qqc6sgf2rp106ha0x6gix0xf8wcrljaab"))))))
114a325e 160 (native-inputs
161 `(("libtool" ,libtool)))
e0958c2d 162 ;; libpng.la says "-lz", so propagate it.
163 (propagated-inputs
164 `(("zlib" ,zlib)))
114a325e 165 (synopsis "APNG patch for libpng")
166 (description
167 "APNG (Animated Portable Network Graphics) is an unofficial
168extension of the APNG (Portable Network Graphics) format.
169APNG patch provides APNG support to libpng.")
e0958c2d 170 (home-page "https://sourceforge.net/projects/libpng-apng/")
171 (license license:zlib)))
114a325e 172
2df831a7
RW
173(define-public libpng-1.2
174 (package
175 (inherit libpng)
6cdd8c97 176 (version "1.2.59")
2df831a7
RW
177 (source
178 (origin
179 (method url-fetch)
2df831a7
RW
180 (uri (list (string-append "mirror://sourceforge/libpng/libpng12/"
181 version "/libpng-" version ".tar.xz")
182 (string-append
183 "ftp://ftp.simplesystems.org/pub/libpng/png/src"
913059a1
EF
184 "/libpng12/libpng-" version ".tar.xz")
185 (string-append
186 "ftp://ftp.simplesystems.org/pub/libpng/png/src/history"
2df831a7
RW
187 "/libpng12/libpng-" version ".tar.xz")))
188 (sha256
6cdd8c97
LF
189 (base32
190 "1izw9ybm27llk8531w6h4jp4rk2rxy2s9vil16nwik5dp0amyqxl"))))))
2df831a7 191
eb60149e
RW
192(define-public r-png
193 (package
194 (name "r-png")
195 (version "0.1-7")
196 (source (origin
197 (method url-fetch)
198 (uri (cran-uri "png" version))
199 (sha256
200 (base32
201 "0g2mcp55lvvpx4kd3mn225mpbxqcq73wy5qx8b4lyf04iybgysg2"))))
202 (build-system r-build-system)
203 (inputs
204 `(("libpng" ,libpng)
205 ("zlib" ,zlib)))
206 (home-page "http://www.rforge.net/png/")
207 (synopsis "Read and write PNG images")
208 (description
209 "This package provides an easy and simple way to read, write and display
210bitmap images stored in the PNG format. It can read and write both files and
211in-memory raw vectors.")
212 ;; Any of these GPL versions.
213 (license (list license:gpl2 license:gpl3))))
214
1ee13e01 215(define-public pngcrush
2f8b9c46 216 (package
1ee13e01 217 (name "pngcrush")
218 (version "1.8.13")
2f8b9c46
HG
219 (source (origin
220 (method url-fetch)
221 (uri (string-append "mirror://sourceforge/pmt/pngcrush/"
1ee13e01 222 version "/pngcrush-" version "-nolib.tar.xz"))
2f8b9c46 223 (sha256 (base32
1ee13e01 224 "0l43c59d6v9l0g07z3q3ywhb8xb3vz74llv3mna0izk9bj6aqkiv"))))
2f8b9c46
HG
225 (build-system gnu-build-system)
226 (arguments
1ee13e01 227 '(#:tests? #f ; no check target
2f8b9c46
HG
228 #:phases
229 (modify-phases %standard-phases
230 (replace 'configure
231 (lambda* (#:key inputs outputs #:allow-other-keys)
1ee13e01 232 (substitute* "Makefile"
2f8b9c46
HG
233 (("^(PNG(INC|LIB) = )/usr/local/" line vardef)
234 (string-append vardef (assoc-ref inputs "libpng") "/"))
235 (("^(Z(INC|LIB) = )/usr/local/" line vardef)
236 (string-append vardef (assoc-ref inputs "zlib") "/"))
237 ;; The Makefile is written by hand and not using $PREFIX
238 (("\\$\\(DESTDIR\\)/usr/")
239 (string-append (assoc-ref outputs "out") "/"))))))))
240 (inputs
241 `(("libpng" ,libpng)
242 ("zlib" , zlib)))
1ee13e01 243 (home-page "https://pmt.sourceforge.io/pngcrush")
2f8b9c46
HG
244 (synopsis "Utility to compress PNG files")
245 (description "pngcrusqh is an optimizer for PNG (Portable Network Graphics)
246files. It can compress them as much as 40% losslessly.")
247 (license license:zlib)))
248
1ee13e01 249(define-public pngcrunch
250 ;; This package used to be wrongfully name "pngcrunch".
251 (deprecated-package "pngcrunch" pngcrush))
252
e55354b8
DT
253(define-public libjpeg
254 (package
255 (name "libjpeg")
24f2334e 256 (version "9b")
e55354b8
DT
257 (source (origin
258 (method url-fetch)
259 (uri (string-append "http://www.ijg.org/files/jpegsrc.v"
260 version ".tar.gz"))
261 (sha256 (base32
24f2334e 262 "0lnhpahgdwlrkd41lx6cr90r199f8mc6ydlh7jznj5klvacd63r4"))))
e55354b8 263 (build-system gnu-build-system)
35b9e423 264 (synopsis "Library for handling JPEG files")
e55354b8
DT
265 (description
266 "Libjpeg implements JPEG image encoding, decoding, and transcoding.
267JPEG is a standardized compression method for full-color and gray-scale
268images.
269The included programs provide conversion between the JPEG format and
270image files in PBMPLUS PPM/PGM, GIF, BMP, and Targa file formats.")
271 (license license:ijg)
272 (home-page "http://www.ijg.org/")))
273
274(define-public libjpeg-8
275 (package (inherit libjpeg)
276 (version "8d")
277 (source (origin
278 (method url-fetch)
279 (uri (string-append "http://www.ijg.org/files/jpegsrc.v"
280 version ".tar.gz"))
281 (sha256 (base32
282 "1cz0dy05mgxqdgjf52p54yxpyy95rgl30cnazdrfmw7hfca9n0h0"))))))
fcc43c1f 283
b81245cc
KK
284(define-public libjxr
285 (package
286 (name "libjxr")
287 (version "1.1")
288 (source (origin
289 ;; We are using the Debian source because CodePlex does not
290 ;; deliver an easily downloadable tarball.
291 (method url-fetch)
292 (uri (string-append "mirror://debian/pool/main/j/jxrlib/jxrlib_"
293 version ".orig.tar.gz"))
294 (sha256
295 (base32
296 "00w3f3cmjsm3fiaxq5mxskmp5rl3mki8psrf9y8s1vqbg237na67"))
297 (patch-flags '("-p1" "--binary"))
298 (patches (search-patches "libjxr-fix-function-signature.patch"
299 "libjxr-fix-typos.patch"))))
300 (build-system gnu-build-system)
301 (arguments '(#:make-flags '("CC=gcc")
302 #:tests? #f ; no check target
303 #:phases
304 (modify-phases %standard-phases
305 (delete 'configure) ; no configure script
306 ;; The upstream makefile does not include an install phase.
307 (replace 'install
308 (lambda* (#:key outputs #:allow-other-keys)
309 (let* ((out (assoc-ref outputs "out"))
310 (bin (string-append out "/bin"))
311 (lib (string-append out "/lib"))
312 (include (string-append out "/include/jxrlib")))
313 (for-each (lambda (file)
314 (install-file file include)
315 (delete-file file))
316 (append
317 '("jxrgluelib/JXRGlue.h"
318 "jxrgluelib/JXRMeta.h"
319 "jxrtestlib/JXRTest.h"
320 "image/sys/windowsmediaphoto.h")
321 (find-files "common/include" "\\.h$")))
322 (for-each (lambda (file)
323 (install-file file lib)
324 (delete-file file))
325 (find-files "." "\\.a$"))
326 (for-each (lambda (file)
327 (install-file file bin)
328 (delete-file file))
329 '("JxrDecApp" "JxrEncApp")))
330 #t)))))
331 (synopsis "Implementation of the JPEG XR standard")
332 (description "JPEG XR is an approved ISO/IEC International standard (its
333official designation is ISO/IEC 29199-2). This library is an implementation of that standard.")
334 (license
335 (license:non-copyleft
336 "file://Makefile"
337 "See the header of the Makefile in the distribution."))
338 (home-page "https://jxrlib.codeplex.com/")))
339
fcc43c1f
AB
340(define-public jpegoptim
341 (package
342 (name "jpegoptim")
e8da8bb1 343 (version "1.4.5")
fcc43c1f
AB
344 (source (origin
345 (method url-fetch)
346 (uri (string-append "http://www.kokkonen.net/tjko/src/jpegoptim-"
347 version ".tar.gz"))
348 (sha256 (base32
e8da8bb1 349 "1mngi8c4mhzwa7i4wqrqq6i80cqj4adbacblfvk6dy573wywyxmi"))))
fcc43c1f
AB
350 (build-system gnu-build-system)
351 (inputs `(("libjpeg" ,libjpeg)))
352 (arguments
353 ;; no tests
354 '(#:tests? #f))
355 (synopsis "Optimize JPEG images")
356 (description
357 "jpegoptim provides lossless optimization (based on optimizing
358the Huffman tables) and \"lossy\" optimization based on setting
359maximum quality factor.")
360 (license license:gpl2+)
ada3b94f 361 (home-page "https://www.kokkonen.net/tjko/projects.html#jpegoptim")))
e55354b8 362
f5e4229a
BT
363(define-public libicns
364 (package
365 (name "libicns")
366 (version "0.8.1")
367 (source (origin
368 (method url-fetch)
369 (uri (string-append
370 "mirror://sourceforge/icns/"
371 "libicns-" version ".tar.gz"))
372 (sha256
373 (base32
374 "1hjm8lwap7bjyyxsyi94fh5817xzqhk4kb5y0b7mb6675xw10prk"))))
375 (build-system gnu-build-system)
376 (inputs
377 `(("libpng" ,libpng)
378 ("jasper" ,jasper)))
379 (arguments
380 `(#:tests? #t)) ; No tests.
381 (home-page "http://icns.sourceforge.net/")
382 (synopsis "Library for handling Mac OS icns resource files")
383 (description
384 "Libicns is a library for the manipulation of Mac OS IconFamily resource
385type files (ICNS). @command{icns2png} and @command{png2icns} are provided to
386convert between PNG and ICNS. @command{icns2png} will extract image files from
387ICNS files under names like \"Foo_48x48x32.png\" useful for installing for use
388with .desktop files. Additionally, @command{icontainer2png} is provided for
389extracting icontainer icon files.")
390 (license (list license:lgpl2.1+ ; libicns
391 license:lgpl2.0+ ; src/apidocs.*
392 license:gpl2+)))) ; icns2png, png2icns, icontainer2png
393
e55354b8
DT
394(define-public libtiff
395 (package
396 (name "libtiff")
2fc47093 397 (version "4.0.9")
c8eb2b8c
LF
398 (source
399 (origin
400 (method url-fetch)
9d7d8e71 401 (uri (string-append "http://download.osgeo.org/libtiff/tiff-"
c8eb2b8c 402 version ".tar.gz"))
c8eb2b8c
LF
403 (sha256
404 (base32
4e1435be
MW
405 "1kfg4q01r4mqn7dj63ifhi6pmqzbf4xax6ni6kkk81ri5kndwyvf"))
406 (patches (search-patches "libtiff-CVE-2017-9935.patch"
407 "libtiff-CVE-2017-18013.patch"))))
e55354b8 408 (build-system gnu-build-system)
6f6eb857
LC
409 (outputs '("out"
410 "doc")) ;1.3 MiB of HTML documentation
411 (arguments
412 ;; Instead of using --docdir, this package has its own --with-docdir.
413 `(#:configure-flags (list (string-append "--with-docdir="
414 (assoc-ref %outputs "doc")
415 "/share/doc/"
416 ,name "-" ,version))))
e55354b8 417 (inputs `(("zlib" ,zlib)
1de0afd5 418 ("libjpeg" ,libjpeg)))
35b9e423 419 (synopsis "Library for handling TIFF files")
e55354b8
DT
420 (description
421 "Libtiff provides support for the Tag Image File Format (TIFF), a format
422used for storing image data.
423Included are a library, libtiff, for reading and writing TIFF and a small
424collection of tools for doing simple manipulations of TIFF images.")
166191b3
LC
425 (license (license:non-copyleft "file://COPYRIGHT"
426 "See COPYRIGHT in the distribution."))
0bd1097c 427 (home-page "http://www.simplesystems.org/libtiff/")))
ed5940b6 428
894e2cba
TUBK
429(define-public leptonica
430 (package
431 (name "leptonica")
340502ba 432 (version "1.74.4")
894e2cba
TUBK
433 (source
434 (origin
435 (method url-fetch)
d02fb7ce
TUBK
436 (uri (string-append
437 "https://github.com/DanBloomberg/leptonica/archive/" version
438 ".tar.gz"))
439 (file-name (string-append "leptonica-" version ".tar.gz"))
894e2cba 440 (sha256
340502ba 441 (base32 "10pw7pwccd0m0fc9rlrr2m41s7j1qvba2wcrav17pw1gclkf34i0"))))
894e2cba
TUBK
442 (build-system gnu-build-system)
443 (native-inputs
d02fb7ce
TUBK
444 `(("gnuplot" ,gnuplot) ;needed for test suite
445 ("autoconf" ,autoconf)
446 ("automake" ,automake)
447 ("libtool" ,libtool)
448 ("pkg-config" ,pkg-config)))
894e2cba
TUBK
449 (inputs
450 `(("giflib" ,giflib)
451 ("libjpeg" ,libjpeg)
452 ("libpng" ,libpng)
453 ("libtiff" ,libtiff)
454 ("libwebp" ,libwebp)))
455 (propagated-inputs
d02fb7ce 456 ;; Linking a program with leptonica also requires these.
894e2cba
TUBK
457 `(("openjpeg" ,openjpeg)
458 ("zlib" ,zlib)))
459 (arguments
d02fb7ce 460 '(#:phases
894e2cba 461 (modify-phases %standard-phases
d02fb7ce
TUBK
462 (add-after 'unpack 'autogen
463 (lambda _
464 (zero? (system* "sh" "autobuild"))))
465 (add-after 'unpack 'patch-reg-wrapper
466 (lambda _
467 (substitute* "prog/reg_wrapper.sh"
468 ((" /bin/sh ")
469 (string-append " " (which "sh") " "))
470 (("which gnuplot")
471 "true")))))))
894e2cba
TUBK
472 (home-page "http://www.leptonica.com/")
473 (synopsis "Library and tools for image processing and analysis")
474 (description
475 "Leptonica is a C library and set of command-line tools for efficient
476image processing and image analysis operations. It supports rasterop, affine
477transformations, binary and grayscale morphology, rank order, and convolution,
478seedfill and connected components, image transformations combining changes in
479scale and pixel depth, and pixelwise masking, blending, enhancement, and
480arithmetic ops.")
481 (license license:bsd-2)))
482
8d9872b5
MB
483(define-public jbig2dec
484 (package
485 (name "jbig2dec")
ef56fdc1 486 (version "0.14")
8d9872b5
MB
487 (source
488 (origin
489 (method url-fetch)
35eade9c
LF
490 (uri (string-append "http://downloads.ghostscript.com/public/" name "/"
491 name "-" version ".tar.gz"))
8d9872b5 492 (sha256
ef56fdc1
LF
493 (base32 "0k01hp0q4275fj4rbr1gy64svfraw5w7wvwl08yjhvsnpb1rid11"))
494 (patches (search-patches "jbig2dec-ignore-testtest.patch"))))
8d9872b5
MB
495 (build-system gnu-build-system)
496 (synopsis "Decoder of the JBIG2 image compression format")
497 (description
7c125ce0
AK
498 "JBIG2 is designed for lossy or lossless encoding of 'bilevel' (1-bit
499monochrome) images at moderately high resolution, and in particular scanned
500paper documents. In this domain it is very efficient, offering compression
501ratios on the order of 100:1.
8d9872b5
MB
502
503This is a decoder only implementation, and currently is in the alpha
504stage, meaning it doesn't completely work yet. However, it is
505maintaining parity with available encoders, so it is useful for real
506work.")
35eade9c 507 (home-page "http://www.ghostscript.com/jbig2dec.html")
8d9872b5 508 (license license:gpl2+)))
38c55e5c
MB
509
510(define-public openjpeg
511 (package
512 (name "openjpeg")
3f697ff2 513 (version "2.3.0")
38c55e5c
MB
514 (source
515 (origin
516 (method url-fetch)
517 (uri
876d80d4
LF
518 (string-append "https://github.com/uclouvain/openjpeg/archive/v"
519 version ".tar.gz"))
520 (file-name (string-append name "-" version ".tar.gz"))
38c55e5c 521 (sha256
876d80d4 522 (base32
3f697ff2 523 "06npqzkg20avnygdwaqpap91r7qpdqgrn39adj2bl8v0pg0qgirx"))))
38c55e5c
MB
524 (build-system cmake-build-system)
525 (arguments
526 ;; Trying to run `$ make check' results in a no rule fault.
527 '(#:tests? #f))
528 (inputs
529 `(("lcms" ,lcms)
530 ("libpng" ,libpng)
531 ("libtiff" ,libtiff)
532 ("zlib" ,zlib)))
533 (synopsis "JPEG 2000 codec")
534 (description
535 "The OpenJPEG library is a JPEG 2000 codec written in C. It has
536been developed in order to promote the use of JPEG 2000, the new
537still-image compression standard from the Joint Photographic Experts
538Group (JPEG).
539
540In addition to the basic codec, various other features are under
541development, among them the JP2 and MJ2 (Motion JPEG 2000) file formats,
542an indexing tool useful for the JPIP protocol, JPWL-tools for
543error-resilience, a Java-viewer for j2k-images, ...")
b9270582 544 (home-page "https://github.com/uclouvain/openjpeg")
38c55e5c 545 (license license:bsd-2)))
76d88cfa 546
6140b9d8
RW
547(define-public openjpeg-1
548 (package (inherit openjpeg)
549 (name "openjpeg")
550 (version "1.5.2")
551 (source
552 (origin
553 (method url-fetch)
554 (uri
de67e922
LF
555 (string-append "mirror://sourceforge/openjpeg.mirror/" version "/"
556 name "-" version ".tar.gz"))
6140b9d8
RW
557 (sha256
558 (base32 "11waq9w215zvzxrpv40afyd18qf79mxc28fda80bm3ax98cpppqm"))))))
559
e596ab0f
AK
560(define-public giflib
561 (package
562 (name "giflib")
3fdb2a84 563 (version "5.1.4")
e596ab0f
AK
564 (source (origin
565 (method url-fetch)
566 (uri (string-append "mirror://sourceforge/giflib/giflib-"
de67e922 567 version ".tar.bz2"))
e596ab0f 568 (sha256
44c5f025 569 (base32
7ac43c44
HG
570 "1md83dip8rf29y40cm5r7nn19705f54iraz6545zhwa6y8zyq9yz"))
571 (patches (search-patches
572 "giflib-make-reallocarray-private.patch"))))
e596ab0f
AK
573 (build-system gnu-build-system)
574 (outputs '("bin" ; utility programs
575 "out")) ; library
576 (inputs `(("libx11" ,libx11)
577 ("libice" ,libice)
578 ("libsm" ,libsm)
579 ("perl" ,perl)))
580 (arguments
44c5f025
EF
581 `(#:phases
582 (modify-phases %standard-phases
583 (add-after 'unpack 'disable-html-doc-gen
584 (lambda _
585 (substitute* "doc/Makefile.in"
4a3ee3fb
MW
586 (("^all: allhtml manpages") ""))
587 #t))
44c5f025
EF
588 (add-after 'install 'install-manpages
589 (lambda* (#:key outputs #:allow-other-keys)
590 (let* ((bin (assoc-ref outputs "bin"))
591 (man1dir (string-append bin "/share/man/man1")))
592 (mkdir-p man1dir)
593 (for-each (lambda (file)
594 (let ((base (basename file)))
595 (format #t "installing `~a' to `~a'~%"
596 base man1dir)
597 (copy-file file
598 (string-append
599 man1dir "/" base))))
4a3ee3fb
MW
600 (find-files "doc" "\\.1"))
601 #t))))))
e596ab0f
AK
602 (synopsis "Tools and library for working with GIF images")
603 (description
35b9e423 604 "GIFLIB is a library for reading and writing GIF images. It is API and
e596ab0f
AK
605ABI compatible with libungif which was in wide use while the LZW compression
606algorithm was patented. Tools are also included to convert, manipulate,
607compose, and analyze GIF images.")
608 (home-page "http://giflib.sourceforge.net/")
609 (license license:x11)))
610
0731a47c
TUBK
611(define-public libungif
612 (package
613 (name "libungif")
614 (version "4.1.4")
615 (source (origin
616 (method url-fetch)
de67e922
LF
617 (uri (string-append "mirror://sourceforge/giflib/libungif-4.x/"
618 "libungif-" version "/libungif-"
0731a47c
TUBK
619 version ".tar.bz2"))
620 (sha256
621 (base32
622 "0cnksimmmjngdrys302ik1385sg1sj4i0gxivzldhgwd46n7x2kh"))))
623 (build-system gnu-build-system)
624 (inputs `(("perl" ,perl))) ;package ships some perl tools
625 (home-page "http://giflib.sourceforge.net/")
626 (synopsis "GIF decompression library")
627 (description
628 "libungif is the old GIF decompression library by the GIFLIB project.")
629 (license license:expat)))
630
76d88cfa
AK
631(define-public imlib2
632 (package
633 (name "imlib2")
c9838530 634 (version "1.5.1")
76d88cfa
AK
635 (source (origin
636 (method url-fetch)
637 (uri (string-append
de67e922
LF
638 "mirror://sourceforge/enlightenment/imlib2-src/" version
639 "/imlib2-" version ".tar.bz2"))
76d88cfa
AK
640 (sha256
641 (base32
c9838530 642 "1bms2iwmvnvpz5jqq3r52glarqkafif47zbh1ykz8hw85d2mfkps"))))
76d88cfa 643 (build-system gnu-build-system)
76d88cfa
AK
644 (native-inputs
645 `(("pkgconfig" ,pkg-config)))
646 (inputs
647 `(("libx11" ,libx11)
648 ("libxext" ,libxext)
649 ("freetype" ,freetype)
650 ("libjpeg" ,libjpeg)
651 ("libpng" ,libpng)
652 ("libtiff" ,libtiff)
653 ("giflib" ,giflib)
654 ("bzip2" ,bzip2)))
3b3b60d0 655 (home-page "https://sourceforge.net/projects/enlightenment/")
76d88cfa
AK
656 (synopsis
657 "Loading, saving, rendering and manipulating image files")
658 (description
659 "Imlib2 is a library that does image file loading and saving as well as
660rendering, manipulation, arbitrary polygon support, etc.
661
662It does ALL of these operations FAST. Imlib2 also tries to be highly
663intelligent about doing them, so writing naive programs can be done easily,
664without sacrificing speed.
665
666This is a complete rewrite over the Imlib 1.x series. The architecture is
667more modular, simple, and flexible.")
8835aed4 668 (license license:imlib2)))
f7d28082
AK
669
670(define-public giblib
671 (package
672 (name "giblib")
673 (version "1.2.4")
674 (source (origin
675 (method url-fetch)
bf512da1
EF
676 (uri (list
677 (string-append
678 "http://linuxbrit.co.uk/downloads/giblib-"
679 version ".tar.gz")
680 (string-append
681 "https://sourceforge.net/projects/slackbuildsdirectlinks/"
682 "files/giblib/giblib-" version ".tar.gz")))
f7d28082
AK
683 (sha256
684 (base32
685 "1b4bmbmj52glq0s898lppkpzxlprq9aav49r06j2wx4dv3212rhp"))))
686 (build-system gnu-build-system)
687 (inputs
688 `(("libx11" ,libx11)
689 ("imlib2" ,imlib2)))
690 (home-page "http://linuxbrit.co.uk/software/") ; no real home-page
691 (synopsis "Wrapper library for imlib2")
692 (description
35b9e423 693 "Giblib is a simple library which wraps imlib2's context API, avoiding
f7d28082
AK
694all the context_get/set calls, adds fontstyles to the truetype renderer and
695supplies a generic doubly-linked list and some string functions.")
696 ;; This license removes a clause about X Consortium from the original
697 ;; X11 license.
698 (license (license:x11-style "file://COPYING"
699 "See 'COPYING' in the distribution."))))
43402c5c
DT
700
701(define-public freeimage
702 (package
703 (name "freeimage")
bcc09d9a 704 (version "3.17.0")
43402c5c
DT
705 (source (origin
706 (method url-fetch)
707 (uri (string-append
708 "mirror://sourceforge/freeimage/Source%20Distribution/"
709 version "/FreeImage"
bcc09d9a 710 (string-concatenate (string-split version #\.))
43402c5c
DT
711 ".zip"))
712 (sha256
713 (base32
93bd4a37 714 "12bz57asdcfsz3zr9i9nska0fb6h3z2aizy412qjqkixkginbz7v"))
a5d4c96b
EF
715 (modules '((guix build utils)))
716 (snippet
717 '(begin
718 (for-each
719 (lambda (dir)
720 (delete-file-recursively (string-append "Source/" dir)))
f347c24a
EF
721 '("LibJPEG" "LibOpenJPEG" "LibPNG" "LibRawLite"
722 ;; "LibJXR"
a5d4c96b
EF
723 "LibWebP" "OpenEXR" "ZLib"))))
724 (patches (search-patches "freeimage-unbundle.patch"
725 "freeimage-CVE-2015-0852.patch"
dc8a34ed
RW
726 "freeimage-CVE-2016-5684.patch"
727 "freeimage-fix-build-with-gcc-5.patch"))))
43402c5c
DT
728 (build-system gnu-build-system)
729 (arguments
4a2798e0
EF
730 '(#:phases
731 (modify-phases %standard-phases
a5d4c96b
EF
732 ;; According to Fedora these files depend on private headers, but their
733 ;; presence is required for building, so we replace them with empty files.
734 (add-after 'unpack 'delete-unbuildable-files
735 (lambda _
736 (for-each (lambda (file)
737 (delete-file file)
738 (close (open file O_CREAT)))
739 '("Source/FreeImage/PluginG3.cpp"
740 "Source/FreeImageToolkit/JPEGTransform.cpp"))
741 #t))
742 ;; These scripts generate the Makefiles.
743 (replace 'configure
744 (lambda _
745 (invoke "sh" "gensrclist.sh")
746 (invoke "sh" "genfipsrclist.sh")))
4a2798e0
EF
747 (add-before 'build 'patch-makefile
748 (lambda* (#:key outputs #:allow-other-keys)
749 (substitute* "Makefile.gnu"
750 (("/usr") (assoc-ref outputs "out"))
751 (("-o root -g root") ""))
752 #t)))
a5d4c96b
EF
753 #:make-flags
754 (list "CC=gcc"
755 ;; We need '-fpermissive' for Source/FreeImage.h.
756 ;; libjxr doesn't have a pkg-config file.
757 (string-append "CFLAGS+=-O2 -fPIC -fvisibility=hidden -fpermissive "
f347c24a
EF
758 ;"-I" (assoc-ref %build-inputs "libjxr") "/include/jxrlib"
759 ))
43402c5c
DT
760 #:tests? #f)) ; no check target
761 (native-inputs
a5d4c96b
EF
762 `(("pkg-config" ,pkg-config)
763 ("unzip" ,unzip)))
764 (inputs
765 `(("libjpeg" ,libjpeg)
f347c24a 766 ;("libjxr" ,libjxr)
a5d4c96b
EF
767 ("libpng" ,libpng)
768 ("libraw" ,libraw)
769 ("libtiff" ,libtiff)
770 ("libwebp" ,libwebp)
771 ("openexr" ,openexr)
772 ("openjpeg" ,openjpeg)
773 ("zlib" ,zlib)))
43402c5c
DT
774 (synopsis "Library for handling popular graphics image formats")
775 (description
776 "FreeImage is a library for developers who would like to support popular
777graphics image formats like PNG, BMP, JPEG, TIFF and others.")
778 (license license:gpl2+)
779 (home-page "http://freeimage.sourceforge.net")))
97039f6e
AE
780
781(define-public vigra
019b3875
AE
782 (package
783 (name "vigra")
83273596 784 (version "1.11.1")
019b3875
AE
785 (source
786 (origin
787 (method url-fetch)
788 (uri (string-append "https://github.com/ukoethe/vigra/releases/download/"
83273596
MB
789 "Version-" (string-join (string-split version #\.) "-")
790 "/vigra-" version "-src.tar.gz"))
019b3875 791 (sha256 (base32
83273596 792 "1bqs8vx5i1bzamvv563i24gx2xxdidqyxh9iaj46mbznhc84wmm5"))))
019b3875
AE
793 (build-system cmake-build-system)
794 (inputs
795 `(("boost" ,boost)
796 ("fftw" ,fftw)
797 ("fftwf" ,fftwf)
798 ("hdf5" ,hdf5)
799 ("ilmbase" ,ilmbase) ; propagated by openexr, but needed explicitly
800 ; to create a configure-flag
801 ("libjpeg" ,libjpeg)
802 ("libpng" ,libpng)
803 ("libtiff" ,libtiff)
804 ("openexr" ,openexr)
805 ("python" ,python-2) ; print syntax
806 ("python2-numpy" ,python2-numpy)
807 ("zlib" ,zlib)))
808 (native-inputs
809 `(("doxygen" ,doxygen)
810 ("python2-nose" ,python2-nose)
811 ("python2-sphinx" ,python2-sphinx)))
812 (arguments
813 `(#:test-target "check"
814 #:parallel-build? #f ; parallel builds trigger an ICE
815 #:configure-flags
816 (list "-Wno-dev" ; suppress developer mode with lots of warnings
817 (string-append "-DVIGRANUMPY_INSTALL_DIR="
818 (assoc-ref %outputs "out")
819 "/lib/python2.7/site-packages")
820 ;; OpenEXR is not enabled by default.
821 "-DWITH_OPENEXR=1"
f803f775
LF
822 ;; Fix rounding error on 32-bit machines
823 "-DCMAKE_C_FLAGS=-ffloat-store"
019b3875
AE
824 ;; The header files of ilmbase are not found when included
825 ;; by the header files of openexr, and an explicit flag
826 ;; needs to be set.
827 (string-append "-DCMAKE_CXX_FLAGS=-I"
828 (assoc-ref %build-inputs "ilmbase")
f803f775
LF
829 "/include/OpenEXR"
830 " -ffloat-store"))))
019b3875
AE
831 (synopsis "Computer vision library")
832 (description
833 "VIGRA stands for Vision with Generic Algorithms. It is an image
97039f6e
AE
834processing and analysis library that puts its main emphasis on customizable
835algorithms and data structures. It is particularly strong for
836multi-dimensional image processing.")
019b3875 837 (license license:expat)
83273596 838 (home-page "https://ukoethe.github.io/vigra/")))
060ad3de 839
62813c10
FT
840(define-public vigra-c
841 (let* ((commit "a2ff675f42079e2623318d8ff8b4288dbe7a7f06")
842 (revision "0")
843 (version (git-version "0.0.0" revision commit)))
844 (package
845 (name "vigra-c")
846 (version version)
847 (home-page "https://github.com/BSeppke/vigra_c")
848 (source (origin
849 (method git-fetch)
850 (uri (git-reference
851 (url home-page)
852 (commit commit)))
853 (sha256
854 (base32
855 "1f1phmfbbz3dsq9330rd6bjmdg29hxskxi9l17cyx1f4mdqpgdgl"))
856 (file-name (git-file-name name version))))
857 (build-system cmake-build-system)
858 (arguments
859 `(#:tests? #f)) ; No test target.
860 (native-inputs
861 `(("doxygen" ,doxygen)))
862 (inputs
863 `(("fftw" ,fftw)
864 ("fftwf" ,fftwf)
865 ("vigra" ,vigra)))
866 (synopsis "C interface to the VIGRA computer vision library")
867 (description
868 "This package provides a C interface to the VIGRA C++ computer vision
869library. It is designed primarily to ease the implementation of higher-level
870language bindings to VIGRA.")
871 (license license:expat))))
872
060ad3de
TUBK
873(define-public libwebp
874 (package
875 (name "libwebp")
b981f777 876 (version "1.0.0")
060ad3de
TUBK
877 (source
878 (origin
b981f777
MB
879 ;; No tarballs are provided for >0.6.1.
880 (method git-fetch)
881 (uri (git-reference
882 (url "https://chromium.googlesource.com/webm/libwebp")
883 (commit (string-append "v" version))))
884 (file-name (git-file-name name version))
060ad3de 885 (sha256
b2ed5ca7 886 (base32
b981f777 887 "1w8jzdbr1s4238ygyrlxryycss3f2z6d9amxdq8m82nl3l6skar4"))))
060ad3de
TUBK
888 (build-system gnu-build-system)
889 (inputs
890 `(("freeglut" ,freeglut)
891 ("giflib" ,giflib)
892 ("libjpeg" ,libjpeg)
893 ("libpng" ,libpng)
894 ("libtiff" ,libtiff)))
b981f777
MB
895 (native-inputs
896 `(("autoconf" ,autoconf)
897 ("automake" ,automake)
898 ("libtool" ,libtool)))
060ad3de
TUBK
899 (arguments
900 '(#:configure-flags '("--enable-libwebpmux"
901 "--enable-libwebpdemux"
b981f777
MB
902 "--enable-libwebpdecoder")
903 #:phases (modify-phases %standard-phases
904 (add-after 'unpack 'bootstrap
905 (lambda _
906 (invoke "autoreconf" "-vif"))))))
060ad3de
TUBK
907 (home-page "https://developers.google.com/speed/webp/")
908 (synopsis "Lossless and lossy image compression")
909 (description
910 "WebP is a new image format that provides lossless and lossy compression
1eefe4a8
LC
911for images. WebP lossless images are 26% smaller in size compared to
912PNGs. WebP lossy images are 25-34% smaller in size compared to JPEG images at
913equivalent SSIM index. WebP supports lossless transparency (also known as
914alpha channel) with just 22% additional bytes. Transparency is also supported
060ad3de
TUBK
915with lossy compression and typically provides 3x smaller file sizes compared
916to PNG when lossy compression is acceptable for the red/green/blue color
917channels.")
918 (license license:bsd-3)))
b9ecd5ae
SB
919
920(define-public libmng
921 (package
922 (name "libmng")
923 (version "2.0.3")
924 (source (origin
925 (method url-fetch)
0f971a04
LF
926 (uri (string-append "mirror://sourceforge/libmng/libmng-devel/"
927 version "/" name "-" version ".tar.xz"))
b9ecd5ae
SB
928 (sha256
929 (base32
930 "1lvxnpds0vcf0lil6ia2036ghqlbl740c4d2sz0q5g6l93fjyija"))))
931 (build-system gnu-build-system)
932 (propagated-inputs
933 ;; These are all in the 'Libs.private' field of libmng.pc.
934 `(("lcms" ,lcms)
935 ("libjpeg" ,libjpeg)
936 ("zlib" ,zlib)))
937 (home-page "http://www.libmng.com/")
938 (synopsis "Library for handling MNG files")
939 (description
940 "Libmng is the MNG (Multiple-image Network Graphics) reference library.")
941 (license license:bsd-3)))
3aab2c83 942
023f0fb0
AK
943(define-public exiv2
944 (package
945 (name "exiv2")
f66ea7b8 946 (version "0.26")
023f0fb0
AK
947 (source (origin
948 (method url-fetch)
f66ea7b8
MB
949 (uri (list (string-append "http://www.exiv2.org/builds/exiv2-"
950 version "-trunk.tar.gz")
951 (string-append "http://www.exiv2.org/exiv2-"
023f0fb0
AK
952 version ".tar.gz")
953 (string-append "https://fossies.org/linux/misc/exiv2-"
954 version ".tar.gz")))
4119376d
MB
955 (patches (search-patches "exiv2-CVE-2017-14860.patch"
956 "exiv2-CVE-2017-14859-14862-14864.patch"))
023f0fb0
AK
957 (sha256
958 (base32
f306825d 959 "1yza317qxd8yshvqnay164imm0ks7cvij8y8j86p1gqi1153qpn7"))))
023f0fb0
AK
960 (build-system gnu-build-system)
961 (arguments '(#:tests? #f)) ; no `check' target
962 (propagated-inputs
963 `(("expat" ,expat)
964 ("zlib" ,zlib)))
965 (native-inputs
966 `(("intltool" ,intltool)))
967 (home-page "http://www.exiv2.org/")
968 (synopsis "Library and command-line utility to manage image metadata")
969 (description
970 "Exiv2 is a C++ library and a command line utility to manage image
971metadata. It provides fast and easy read and write access to the Exif, IPTC
972and XMP metadata of images in various formats.")
973
974 ;; Files under `xmpsdk' are a copy of Adobe's XMP SDK, licensed under the
975 ;; 3-clause BSD license: <http://www.adobe.com/devnet/xmp/sdk/eula.html>.
976 ;; The core is GPLv2+:
977 ;; <https://launchpad.net/ubuntu/precise/+source/exiv2/+copyright>.
978 (license license:gpl2+)))
979
3aab2c83
DT
980(define-public devil
981 (package
982 (name "devil")
77ab6983 983 (version "1.8.0")
3aab2c83
DT
984 (source (origin
985 (method url-fetch)
986 (uri (string-append "http://downloads.sourceforge.net/openil/"
987 "DevIL-" version ".tar.gz"))
988 (sha256
989 (base32
77ab6983
MB
990 "02dpzvi493r09c9hfjnk54nladl3qw55iqkkg18g12fxwwz9fx80"))))
991 (build-system cmake-build-system)
3aab2c83 992 (arguments
77ab6983
MB
993 '(;; XXX: Not supported in the released CMakeLists.txt.
994 ;; Enable this for > 1.8.0.
995 #:tests? #f
3aab2c83
DT
996 #:phases
997 (modify-phases %standard-phases
77ab6983
MB
998 (add-before 'configure 'change-directory
999 (lambda _ (chdir "DevIL") #t)))))
3aab2c83
DT
1000 (native-inputs
1001 `(("pkg-config" ,pkg-config)))
1002 (inputs
1003 `(("lcms" ,lcms)
77ab6983 1004 ("libjpeg" ,libjpeg-turbo)
3aab2c83
DT
1005 ("libmng" ,libmng)
1006 ("libpng" ,libpng)
1007 ("libtiff" ,libtiff)
1008 ("openexr" ,openexr)
1009 ("zlib" ,zlib)))
1010 (synopsis "Library for manipulating many image formats")
1011 (description "Developer's Image Library (DevIL) is a library to develop
1012applications with support for many types of images. DevIL can load, save,
1013convert, manipulate, filter and display a wide variety of image formats.")
1014 (home-page "http://openil.sourceforge.net")
1015 (license license:lgpl2.1+)))
b0b23e52
DT
1016
1017(define-public jasper
1018 (package
1019 (name "jasper")
4c7ad0bc 1020 (version "2.0.14")
b0b23e52
DT
1021 (source (origin
1022 (method url-fetch)
4a897c49
LF
1023 (uri (string-append "https://github.com/mdadams/jasper/archive/"
1024 "version-" version ".tar.gz"))
1025 (file-name (string-append name "-" version ".tar.gz"))
b0b23e52
DT
1026 (sha256
1027 (base32
4c7ad0bc 1028 "0yx9y5y0g6jv142vnqp50j3k8k5yqznz3smrblv192wgfbm6w9l5"))))
c7a70c33 1029 (build-system cmake-build-system)
d87c201f 1030 (inputs `(("libjpeg" ,libjpeg)))
b0b23e52
DT
1031 (synopsis "JPEG-2000 library")
1032 (description "The JasPer Project is an initiative to provide a reference
1033implementation of the codec specified in the JPEG-2000 Part-1 standard (i.e.,
1034ISO/IEC 15444-1).")
1035 (home-page "https://www.ece.uvic.ca/~frodo/jasper/")
1036 (license (license:x11-style "file://LICENSE"))))
365a4a7f
EF
1037
1038(define-public zimg
1039 (package
1040 (name "zimg")
60092c18 1041 (version "2.5")
365a4a7f
EF
1042 (source
1043 (origin
1044 (method url-fetch)
1045 (uri (string-append "https://github.com/sekrit-twc/zimg/archive/"
1046 "release-" version ".tar.gz"))
1047 (file-name (string-append name "-" version ".tar.gz"))
1048 (sha256
1049 (base32
60092c18 1050 "0kbq2dy659645fmgxpzg38b6y6x82kwkydhc380kdkaikv2brcjh"))))
365a4a7f
EF
1051 (build-system gnu-build-system)
1052 (native-inputs
1053 `(("autoconf" ,autoconf)
1054 ("automake" ,automake)
1055 ("libtool" ,libtool)))
1056 (arguments
1057 '(#:phases
1058 (modify-phases %standard-phases
1059 (add-after 'unpack 'autogen
1060 (lambda _
1061 (zero? (system* "sh" "autogen.sh")))))))
1062 (synopsis "Scaling, colorspace conversion, and dithering library")
1063 (description "Zimg implements the commonly required image processing basics
1064of scaling, colorspace conversion, and depth conversion. A simple API enables
1065conversion between any supported formats to operate with minimal knowledge from
1066the programmer.")
1067 (home-page "https://github.com/sekrit-twc/zimg")
8ee04627 1068 ;; test/extra/ contains musl-libm,
365a4a7f
EF
1069 ;; which is MIT/expat licensed, but only used for tests
1070 (license (license:fsf-free "file://COPYING")))) ;WTFPL version 2
af7aaaeb
TGR
1071
1072(define-public perceptualdiff
1073 (package
1074 (name "perceptualdiff")
1075 (version "1.3")
1076 (source
1077 (origin
1078 (method url-fetch)
1079 (uri (string-append "https://github.com/myint/perceptualdiff/archive/v"
1080 version ".tar.gz"))
1081 (file-name (string-append name "-" version ".tar.gz"))
1082 (sha256
1083 (base32
1084 "0zl6xmp971fffg7fzcz2fbgxg5x2w7l8qa65c008i4kbkc9016ps"))))
1085 (build-system cmake-build-system)
1086 (inputs `(("freeimage" ,freeimage)))
1087 (arguments
1088 '(#:phases (modify-phases %standard-phases
1089 (add-after 'unpack 'fix-tests
1090 ;; cmake-build-system uses a build/ directory outside
1091 ;; of the source tree, one level higher than expected
1092 (lambda _
1093 (substitute* "test/run_tests.bash"
1094 (("../build") "../../build")))))))
1095 (home-page "https://github.com/myint/perceptualdiff")
1096 (synopsis "Perceptual image comparison utility")
1097 (description "PerceptualDiff visually compares two images to determine
1098whether they look alike. It uses a computational model of the human visual
1099system to detect similarities. This allows it too see beyond irrelevant
1100differences in file encoding, image quality, and other small variations.")
1101 (license license:gpl2+)))
1fa3e336
EB
1102
1103(define-public steghide
1104 (package
1105 (name "steghide")
1106 (version "0.5.1")
1107 (source (origin
1108 (method url-fetch)
1109 (uri (string-append "mirror://sourceforge/steghide/steghide/"
1110 version "/steghide-" version ".tar.bz2"))
1111 (sha256
1112 (base32
1113 "18bxlhbdc3zsmxj84i417xjh0q28kv26q449k23n0a72ldwziix2"))
1114 (patches (list (search-patch "steghide-fixes.patch")))))
1115 (build-system gnu-build-system)
1116 (native-inputs
7c90d0f4 1117 `(("gettext" ,gettext-minimal)
1fa3e336
EB
1118 ("libtool" ,libtool)
1119 ("perl" ,perl))) ;for tests
1120 (inputs
1121 `(("libmhash" ,libmhash)
1122 ("libmcrypt" ,libmcrypt)
1123 ("libjpeg" ,libjpeg)
1124 ("zlib" ,zlib)))
1125 (arguments
a56bf101
LC
1126 `(#:make-flags '("CXXFLAGS=-fpermissive") ;required for MHashPP.cc
1127
1128 #:phases (modify-phases %standard-phases
1129 (add-before 'configure 'set-perl-search-path
1130 (lambda _
1131 ;; Work around "dotless @INC" build failure.
1132 (setenv "PERL5LIB"
1133 (string-append (getcwd) "/tests:"
1134 (getenv "PERL5LIB")))
1135 #t)))))
1fa3e336
EB
1136 (home-page "http://steghide.sourceforge.net")
1137 (synopsis "Image and audio steganography")
1138 (description
7832785d
TGR
1139 "Steghide is a program to hide data in various kinds of image and audio
1140files (known as @dfn{steganography}). Neither color nor sample frequencies are
1141changed, making the embedding resistant against first-order statistical tests.")
1fa3e336 1142 (license license:gpl2+)))
ac2a38a5
RW
1143
1144(define-public stb-image-for-extempore
1145 (let ((revision "1")
1146 (commit "152a250a702bf28951bb0220d63bc0c99830c498"))
1147 (package
1148 (name "stb-image-for-extempore")
1149 (version (string-append "0-" revision "." (string-take commit 9)))
1150 (source
1151 (origin (method git-fetch)
1152 (uri (git-reference
1153 (url "https://github.com/extemporelang/stb.git")
1154 (commit commit)))
1155 (sha256
1156 (base32
1157 "0y0aa20pj9311x2ii06zg8xs34idg14hfgldqc5ymizc6cf1qiqv"))
1158 (file-name (string-append name "-" version "-checkout"))))
1159 (build-system cmake-build-system)
1160 (arguments `(#:tests? #f)) ; no tests included
39162ee4
RW
1161 ;; Extempore refuses to build on architectures other than x86_64
1162 (supported-systems '("x86_64-linux"))
ac2a38a5
RW
1163 (home-page "https://github.com/extemporelang/stb")
1164 (synopsis "Image library for Extempore")
1165 (description
1166 "This package is a collection of assorted single-file libraries. Of
1167all included libraries only the image loading and decoding library is
1168installed as @code{stb_image}.")
1169 (license license:public-domain))))
93117227
AI
1170
1171(define-public optipng
1172 (package
1173 (name "optipng")
bbf8832f 1174 (version "0.7.7")
93117227
AI
1175 (source
1176 (origin
1177 (method url-fetch)
1178 (uri (string-append "http://prdownloads.sourceforge.net/optipng/optipng-"
1179 version ".tar.gz"))
1180 (sha256
1181 (base32
bbf8832f 1182 "0lj4clb851fzpaq446wgj0sfy922zs5l5misbpwv6w7qrqrz4cjg"))))
93117227
AI
1183 (build-system gnu-build-system)
1184 (inputs
1185 `(("zlib" ,zlib)))
1186 (arguments
1187 '(#:phases
1188 (modify-phases %standard-phases
93117227
AI
1189 (replace 'configure
1190 (lambda* (#:key outputs #:allow-other-keys)
bbf8832f
TGR
1191 ;; configure script doesn't accept arguments CONFIG_SHELL and SHELL
1192 (invoke "sh" "configure"
1193 (string-append "--prefix=" (assoc-ref outputs "out")))
1194 #t)))))
1195 (synopsis "Optimizer that recompresses PNG image files to a smaller size")
93117227
AI
1196 (description "OptiPNG is a PNG optimizer that recompresses image
1197files to a smaller size, without losing any information. This program
1198also converts external formats (BMP, GIF, PNM and TIFF) to optimized
1199PNG, and performs PNG integrity checks and corrections.")
1200 (home-page "http://optipng.sourceforge.net/")
1201 (license license:zlib)))
37e05d64
TGR
1202
1203(define-public libjpeg-turbo
1204 (package
1205 (name "libjpeg-turbo")
2ea33335 1206 (version "1.5.3")
37e05d64
TGR
1207 (source (origin
1208 (method url-fetch)
1209 (uri (string-append "mirror://sourceforge/" name "/" version "/"
1210 name "-" version ".tar.gz"))
1211 (sha256
1212 (base32
2ea33335 1213 "08r5b5mywwrxv4axvq80dm31cklz81grczlzlxr2xqa6pgi90j5j"))))
37e05d64
TGR
1214 (build-system gnu-build-system)
1215 (native-inputs
1216 `(("nasm" ,nasm)))
1217 (arguments
c15374e0
LC
1218 '(#:test-target "test"
1219 #:configure-flags (list "--with-build-date=1970-01-01")))
37e05d64
TGR
1220 (home-page "http://www.libjpeg-turbo.org/")
1221 (synopsis "SIMD-accelerated JPEG image handling library")
1222 (description "libjpeg-turbo is a JPEG image codec that accelerates baseline
1223JPEG compression and decompression using SIMD instructions: MMX on x86, SSE2 on
1224x86-64, NEON on ARM, and AltiVec on PowerPC processors. Even on other systems,
1225its highly-optimized Huffman coding routines allow it to outperform libjpeg by
1226a significant amount.
1227libjpeg-turbo implements both the traditional libjpeg API and the less powerful
1228but more straightforward TurboJPEG API, and provides a full-featured Java
1229interface. It supports color space extensions that allow it to compress from
1230and decompress to 32-bit and big-endian pixel buffers (RGBX, XBGR, etc.).")
1231 (license (list license:bsd-3 ; jsimd*.[ch] and most of simd/
1232 license:ijg)))) ; the rest
21122bd7
JD
1233
1234(define-public niftilib
1235 (package
f729a4d8
RW
1236 (name "niftilib")
1237 (version "2.0.0")
1238 (source (origin
1239 (method url-fetch)
1240 (uri (list (string-append "mirror://sourceforge/niftilib/"
1241 "nifticlib/nifticlib_"
1242 (string-join (string-split version #\.) "_")
1243 "/nifticlib-" version ".tar.gz")))
1244 (sha256
1245 (base32 "123z9bwzgin5y8gi5ni8j217k7n683whjsvg0lrpii9flgk8isd3"))))
1246 (build-system gnu-build-system)
1247 (arguments
1248 '(#:tests? #f ; there is no test target
1249 #:parallel-build? #f ; not supported
1250 #:make-flags
1251 (list "SHELL=bash"
1252 (string-append "ZLIB_INC="
1253 (assoc-ref %build-inputs "zlib") "/include")
1254 ;; Append "-fPIC" to CFLAGS.
1255 (string-append "CFLAGS="
1256 "-Wall -ansi -pedantic -fPIC"))
1257 #:phases
1258 (modify-phases %standard-phases
1259 (replace 'install
1260 (lambda* (#:key outputs #:allow-other-keys)
1261 (let ((out (assoc-ref outputs "out")))
1262 (for-each
1263 (lambda (dir)
1264 (copy-recursively dir (string-append out "/" dir)))
1265 '("bin" "lib" "include")))
1266 #t))
1267 (delete 'configure))))
1268 (inputs
1269 `(("zlib" ,zlib)))
1270 (synopsis "Library for reading and writing files in the nifti-1 format")
1271 (description "Niftilib is a set of i/o libraries for reading and writing
21122bd7
JD
1272files in the nifti-1 data format - a binary file format for storing
1273medical image data, e.g. magnetic resonance image (MRI) and functional MRI
1274(fMRI) brain images.")
f729a4d8
RW
1275 (home-page "http://niftilib.sourceforge.net")
1276 (license license:public-domain)))
f2079849
JL
1277
1278(define-public gpick
1279 (package
1280 (name "gpick")
1281 (version "0.2.5")
1282 (source (origin
1283 (method url-fetch)
1284 (uri (string-append "https://github.com/thezbyg/gpick/archive/"
1285 name "-" version ".tar.gz"))
1286 (sha256
1287 (base32
1288 "0mxvxk15xhk2i5vfavjhnkk4j3bnii0gpf8di14rlbpq070hd5rs"))))
2235abb2 1289 (build-system scons-build-system)
f2079849
JL
1290 (native-inputs
1291 `(("boost" ,boost)
1292 ("gettext" ,gnu-gettext)
2235abb2 1293 ("pkg-config" ,pkg-config)))
f2079849
JL
1294 (inputs
1295 `(("expat" ,expat)
1296 ("gtk2" ,gtk+-2)
1297 ("lua" ,lua-5.2)))
1298 (arguments
1299 `(#:tests? #f
2235abb2
AI
1300 #:scons ,scons-python2
1301 #:scons-flags (list (string-append "DESTDIR=" %output))
f2079849
JL
1302 #:phases
1303 (modify-phases %standard-phases
1304 (add-before 'build 'fix-lua-reference
1305 (lambda _
1306 (substitute* "SConscript"
1307 (("lua5.2") "lua-5.2"))
2235abb2 1308 #t)))))
f2079849
JL
1309 (home-page "http://www.gpick.org/")
1310 (synopsis "Color picker")
1311 (description "Gpick is an advanced color picker and palette editing tool.")
1312 (license license:bsd-3)))
bc806b0c
LF
1313
1314(define-public libiptcdata
1315 (package
1316 (name "libiptcdata")
1317 (version "1.0.4")
1318 (source (origin
1319 (method url-fetch)
1320 (uri (string-append "mirror://sourceforge/" name "/" name "/"
1321 version "/" name "-" version ".tar.gz"))
1322 (sha256
1323 (base32
1324 "03pfvkmmx762iydq0q207x2028d275pbdysfsgpmrr0ywy63pxkr"))))
1325 (build-system gnu-build-system)
1326 (home-page "http://libiptcdata.sourceforge.net/")
1327 (synopsis "IPTC metadata manipulation library")
1328 (description "Libiptcdata is a C library for manipulating the International
1329Press Telecommunications Council (IPTC) metadata stored within multimedia files
1330such as images. This metadata can include captions and keywords, often used by
1331popular photo management applications. The library provides routines for
1332parsing, viewing, modifying, and saving this metadata.")
1333 (license license:lgpl2.0+)))
84567657
OP
1334
1335(define-public flameshot
1336 (package
1337 (name "flameshot")
1338 (version "0.5.1")
1339 (source
1340 (origin
1341 (method url-fetch)
1342 (uri (string-append "https://github.com/lupoDharkael/flameshot/archive/"
1343 "v" version ".tar.gz"))
1344 (file-name (string-append name "-" version ".tar.gz"))
1345 (sha256
1346 (base32
1347 "0kp451bqgssvg8n3sg60s3fifplm9l5kxiij0yxkl864p2mhw8im"))))
1348 (build-system gnu-build-system)
1349 (native-inputs
1350 `(("qttools" ,qttools)))
1351 (inputs
1352 `(("qtbase" ,qtbase)))
1353 (arguments
1354 `(#:tests? #f ; no tests
1355 #:phases
1356 (modify-phases %standard-phases
1357 (replace 'configure
1358 (lambda* (#:key outputs #:allow-other-keys)
1359 (invoke "qmake"
1360 "CONFIG+=packaging"
1361 (string-append "BASEDIR=" (assoc-ref outputs "out"))
1362 "PREFIX=/"))))))
1363 (home-page "https://github.com/lupoDharkael/flameshot")
1364 (synopsis "Powerful yet simple to use screenshot software")
1365 (description "Flameshot is a screenshot program.
1366Features:
1367
1368@itemize
1369@item Customizable appearance.
1370@item Easy to use.
1371@item In-app screenshot edition.
1372@item DBus interface.
1373@item Upload to Imgur.
1374@end itemize\n")
1375 (license license:gpl3+)))
da4dde61
LF
1376
1377(define-public r-jpeg
1378 (package
1379 (name "r-jpeg")
1380 (version "0.1-8")
1381 (source
1382 (origin
1383 (method url-fetch)
1384 (uri (cran-uri "jpeg" version))
1385 (sha256
1386 (base32
1387 "05hawv5qcb82ljc1l2nchx1wah8mq2k2kfkhpzyww554ngzbwcnh"))))
1388 (build-system r-build-system)
1389 (inputs `(("libjpeg" ,libjpeg)))
1390 (home-page "http://www.rforge.net/jpeg/")
1391 (synopsis "Read and write JPEG images with R")
1392 (description "This package provides a way to read, write and display bitmap
1393images stored in the JPEG format with R. It can read and write both files and
1394in-memory raw vectors.")
1395 (license license:gpl2+)))
0d529a7c
PN
1396
1397(define-public gifsicle
1398 (package
1399 (name "gifsicle")
1400 (version "1.91")
1401 (source
1402 (origin
1403 (method url-fetch)
1404 (uri (string-append "http://www.lcdf.org/gifsicle/gifsicle-"
1405 version ".tar.gz"))
1406 (sha256
1407 (base32
1408 "00586z1yz86qcblgmf16yly39n4lkjrscl52hvfxqk14m81fckha"))))
1409 (build-system gnu-build-system)
1410 (arguments
1411 '(#:phases
1412 (modify-phases %standard-phases
1413 (add-before 'check 'patch-tests
1414 (lambda _
1415 (substitute* "test/testie"
1416 (("/usr/bin/perl")
1417 (which "perl"))
1418 (("/bin/sh")
1419 (which "sh"))
1420 (("/bin/rm")
1421 (which "rm")))
1422 #t)))))
1423 (native-inputs `(("perl" ,perl))) ; Only for tests.
1424 (inputs `(("libx11" ,libx11)))
1425 (home-page "http://www.lcdf.org/gifsicle/")
1426 (synopsis "Edit GIF images and animations")
1427 (description "Gifsicle is a command-line GIF image manipulation tool that:
1428
1429@itemize
1430@item Provides a batch mode for changing GIFs in place.
1431@item Prints detailed information about GIFs, including comments.
1432@item Control over interlacing, comments, looping, transparency, etc.
1433@item Creates well-behaved GIFs: removes redundant colors, only uses local color
1434tables, etc.
1435@item Shrinks colormaps and change images to use the Web-safe palette.
1436@item Optimizes GIF animations, or unoptimizes them for easier editing.
1437@end itemize
1438
1439Two other programs are included with Gifsicle: @command{gifview} is a
1440lightweight animated-GIF viewer, and @command{gifdiff} compares two GIFs for
1441identical visual appearance.")
1442 (license license:gpl2+)))