Skip to content

Commit 39cef55

Browse files
authored
feat: add FileIO support (#14)
1 parent abd540e commit 39cef55

File tree

6 files changed

+42
-0
lines changed

6 files changed

+42
-0
lines changed

Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ version = "0.1.0"
55

66
[deps]
77
CEnum = "fa961155-64e5-5f13-b03f-caf6b980ea82"
8+
FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
89
ImageCore = "a09fc81d-aa75-5fe9-8630-4744c3626534"
910
JpegTurbo_jll = "aacddb02-875f-59d6-b918-886e6ef4fbf8"
1011

1112
[compat]
1213
CEnum = "0.3, 0.4"
14+
FileIO = "1"
1315
ImageCore = "0.8, 0.9"
1416
JpegTurbo_jll = "~2.1"
1517
julia = "1.6"

src/JpegTurbo.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ include("common.jl")
1010
include("encode.jl")
1111
include("decode.jl")
1212

13+
include("fileio.jl")
14+
1315
export jpeg_encode, jpeg_decode
1416

1517
end

src/fileio.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using FileIO
2+
3+
function fileio_load(f::File{format"JPEG"}; kwargs...)
4+
open(f.filename, "r") do io
5+
jpeg_decode(io; kwargs...)
6+
end
7+
end
8+
fileio_load(io::Stream{format"JPEG"}; kwargs...) = jpeg_decode(read(io); kwargs...)
9+
10+
function fileio_save(f::File{format"JPEG"}, img::AbstractArray; kwargs...)
11+
open(f.filename, "w") do io
12+
jpeg_encode(io, img; kwargs...)
13+
end
14+
end
15+
function fileio_save(io::Stream{format"JPEG"}, img::AbstractArray; kwargs...)
16+
jpeg_encode(io.io, img; kwargs...)
17+
end

test/Project.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
[deps]
22
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
33
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
4+
FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
45
ImageCore = "a09fc81d-aa75-5fe9-8630-4744c3626534"
56
ImageIO = "82e4d734-157c-48bb-816b-45c225c6df19"
67
ImageQualityIndexes = "2996bd0c-7a13-11e9-2da2-2f5ce47296a9"

test/fileio.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
@testset "FileIO" begin
2+
img = testimage("cameraman")
3+
ref = jpeg_decode(jpeg_encode(img))
4+
tmpfile = File{format"JPEG"}(joinpath(tmpdir, "tmp.jpg"))
5+
6+
JpegTurbo.fileio_save(tmpfile, img)
7+
data = JpegTurbo.fileio_load(tmpfile)
8+
@test data == ref
9+
10+
open(tmpfile, "w") do s
11+
JpegTurbo.fileio_save(s, img)
12+
end
13+
data = open(tmpfile) do s
14+
JpegTurbo.fileio_load(s)
15+
end
16+
@test data == ref
17+
end

test/runtests.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,7 @@ const tmpdir = tempdir()
5151
else
5252
@info "Multi-threads test: skipped"
5353
end
54+
55+
# TODO(johnnychen94): enable after JpegTurbo is registered in FileIO
56+
# include("fileio.jl")
5457
end

0 commit comments

Comments
 (0)