Skip to content

Commit cfa146e

Browse files
committed
add support for 32-bit TIFFs
1 parent 91fb22a commit cfa146e

File tree

4 files changed

+25
-4
lines changed

4 files changed

+25
-4
lines changed

src/ImageMagick.jl

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,15 @@ function load_(file::Union{AbstractString,IO,Vector{UInt8}}; ImageType=Image, ex
8181
end
8282

8383
depth = getimagedepth(wand)
84+
# use an even # of fractional bits for depth>8 (see issue 242#issuecomment-68845157)
85+
evendepth = ((depth+1)>>1)<<1
8486
if depth <= 8
85-
T = UFixed8 # always use 8-bit for 8-bit and less
87+
T = UFixed{UInt8,8} # otherwise use 8 fractional bits
88+
elseif depth <= 16
89+
T = UFixed{UInt16,evendepth}
8690
else
87-
T = UFixed{UInt16,((depth+1)>>1)<<1} # always use an even # of bits (see issue 242#issuecomment-68845157)
91+
warn("some versions of ImageMagick give spurious low-order bits for 32-bit TIFFs")
92+
T = UFixed{UInt32,evendepth}
8893
end
8994

9095
channelorder = cs

test/constructed_images.jl

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using ImageMagick, Images, ColorTypes, FixedPointNumbers, FileIO
1+
using Images, ColorTypes, FixedPointNumbers, FileIO
22
using FactCheck
33
using Compat
44

@@ -147,6 +147,19 @@ facts("IO") do
147147
@fact A --> B
148148
end
149149

150+
#= FAILS ON SCIENTIFIC LINUX 7.2 WITH IMAGEMAGICK 6.9.5, works for other combos
151+
context("32-bit TIFF (issue #49)") do
152+
Ar = rand(0x00000000:0xffffffff, 2, 2, 4)
153+
Ar[1] = 0xffffffff
154+
A = Image(map(x->Gray(UFixed{UInt32,32}(x,0)), Ar); colorspace="Gray", spatialorder=["x", "y"], timedim=3) # grayim does not use timedim, but load does...
155+
fn = joinpath(workdir, "3d32.tif")
156+
ImageMagick.save(fn, A)
157+
B = ImageMagick.load(fn)
158+
159+
@fact A --> B
160+
end
161+
=#
162+
150163
context("Clamping (issue #256)") do
151164
Ar = rand(2,2)
152165
Ar[1] = 1

test/readremote.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using ImageMagick
21
using FactCheck, Images, Colors, FixedPointNumbers, ZipFile
32

43
workdir = joinpath(tempdir(), "Images")

test/runtests.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
using ImageMagick
2+
3+
info("ImageMagick version ", ImageMagick.libversion)
4+
15
include("constructed_images.jl")
26
include("readremote.jl")
37

0 commit comments

Comments
 (0)