diff --git a/Common/Project.toml b/Common/Project.toml index e12d8cd8d..6cdbd1365 100644 --- a/Common/Project.toml +++ b/Common/Project.toml @@ -133,7 +133,7 @@ CodecZstd = "6b39b394-51ab-5f42-8807-6242bab2b4c2" ColorTypes = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" DBInterface = "a10d1c49-ce27-4219-8d33-6db1a4562965" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -DataToolkitCore = "e209d0c3-e863-446f-9b45-de6ca9730756" +DataToolkitCore = "caac3e55-418c-402e-a061-64d454aa8f4f" DelimitedFiles = "8bb1440f-4735-579b-a4ab-409b98df4dab" Downloads = "f43a241f-c20a-4ad4-852c-f6b1247861c6" JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" diff --git a/Common/ext/TiffImagesExt.jl b/Common/ext/TiffImagesExt.jl index dcff98a87..72918255a 100644 --- a/Common/ext/TiffImagesExt.jl +++ b/Common/ext/TiffImagesExt.jl @@ -3,8 +3,8 @@ module TiffImagesExt using TiffImages import DataToolkitCommon: _read_tiff, _write_tiff -_read_tiff(from::IO) = - TiffImages.load(from) +_read_tiff(from::IO; kwargs...) = + TiffImages.load(from; kwargs...) _write_tiff(dest::IO, info::AbstractMatrix) = TiffImages.save(dest, info) diff --git a/Common/src/transformers/saveload/tiff.jl b/Common/src/transformers/saveload/tiff.jl index b0ffd87cd..ab988ce52 100644 --- a/Common/src/transformers/saveload/tiff.jl +++ b/Common/src/transformers/saveload/tiff.jl @@ -3,7 +3,10 @@ function _write_tiff end # Implemented in `../../../ext/TiffImagesExt.jl` function load(loader::DataLoader{:tiff}, from::IO, ::Type{AbstractMatrix}) @require TiffImages - invokelatest(_read_tiff, from) + verbose = @getparam loader."verbose"::Bool false + lazyio = @getparam loader."lazyio"::Bool false + mmap = @getparam loader."mmap"::Bool false + invokelatest(_read_tiff, from; verbose, lazyio, mmap) end function save(writer::DataWriter{:tiff}, dest::IO, info::AbstractMatrix) @@ -22,7 +25,9 @@ Encode and decode Tiff files # Input/output -The `tiff` driver expects data to be provided via `IO`. +The `tiff` driver expects data to be provided via `IOStream`. You can set +`verbose`, `lazyio`, and `mmap` as described in +[TiffImages.jl's documentation](https://tamasnagy.com/TiffImages.jl/stable/lib/public/#TiffImages.load). It will parse to a `TiffImages.AbstractTIFF`. @@ -35,5 +40,8 @@ It will parse to a `TiffImages.AbstractTIFF`. ```toml [[someimage.loader]] driver = "tiff" +verbose = false # default +lazyio = false # default +mmap = false # default ``` """ diff --git a/Common/test/Data.toml b/Common/test/Data.toml index c39d9af07..45c3134d3 100644 --- a/Common/test/Data.toml +++ b/Common/test/Data.toml @@ -290,6 +290,30 @@ uuid = "66a5fc67-cee1-4481-b9f2-e750be2897ff" [[lighthouse-tiff.loader]] driver = "tiff" +[[lighthouse-tiff-mmap]] +uuid = "c7443fa2-8b9f-4a4c-821f-7815ba31716b" + + [[lighthouse-tiff-mmap.storage]] + driver = "web" + checksum = "k12:56893a4e9f184ea70602710f34040467" + url = "https://raw.githubusercontent.com/tecosaur/DataToolkitTestAssets/master/data/lighthouse.tiff" + + [[lighthouse-tiff-mmap.loader]] + driver = "tiff" + mmap = true + +[[lighthouse-tiff-lazyio]] +uuid = "baee9117-a3ef-43af-885e-c73776498643" + + [[lighthouse-tiff-lazyio.storage]] + driver = "web" + checksum = "k12:56893a4e9f184ea70602710f34040467" + url = "https://raw.githubusercontent.com/tecosaur/DataToolkitTestAssets/master/data/lighthouse.tiff" + + [[lighthouse-tiff-lazyio.loader]] + driver = "tiff" + lazyio = true + [[lighthouse-webp]] uuid = "62ef89d8-2d69-4ca1-a13b-d24e5e56995b" diff --git a/Common/test/runtests.jl b/Common/test/runtests.jl index 383544171..704376adb 100644 --- a/Common/test/runtests.jl +++ b/Common/test/runtests.jl @@ -55,6 +55,8 @@ end end @testset "tiff" begin @test read(dataset("lighthouse-tiff"), AbstractMatrix) isa AbstractMatrix + @test read(dataset("lighthouse-tiff-mmap"), AbstractMatrix) isa AbstractMatrix + @test read(dataset("lighthouse-tiff-lazyio"), AbstractMatrix) isa AbstractMatrix end @testset "toml" begin @test sort([k => length(v) for (k, v) in read(dataset("sample-toml"))], by=first) ==