Aurelia Molzer
a7dda6f4b1
Merge pull request #399 from lilith/fix/clamp-extended-depth
...
decoder: reconstruct extended-depth samples modulo declared bit depth (supersedes #396 )
2026-07-19 22:18:33 +00:00
Aurelia Molzer
a9cf5e17b9
Merge pull request #404 from kleinicke/fix-clippy-useless-borrow
...
Fix clippy 1.97 useless_borrows_in_formatting lint failing CI
2026-07-16 15:59:04 +00:00
Aurelia Molzer
8ad05b85db
Merge pull request #397 from soyosaki/lenient
...
Fix: add a lenient mode for image decoder
2026-07-03 14:36:35 +00:00
Aurelia Molzer
22b4c39254
Merge pull request #394 from powturns/main
...
Add PhotometricInterpretation unknown tag support
2026-06-02 17:50:20 +00:00
Aurelia Molzer
c4285aea4a
Merge pull request #393 from image-rs/bench-lzw
...
Fix benches/lzw.rs directory iteration
2026-05-16 15:59:17 +00:00
A. Molzer
a1426ca802
Fix benches/lzw.rs directory iteration
2026-05-16 02:28:36 +02:00
Aurelia Molzer
66e6567acc
Merge pull request #392 from image-rs/upgrade-weezl
...
Upgrade weezl to 0.2
2026-05-15 22:51:46 +00:00
A. Molzer
5947d3b72e
Make newer clippy happy
2026-05-16 00:46:02 +02:00
A. Molzer
0fdf1e0502
Upgrade weezl to 0.2
2026-05-16 00:40:00 +02:00
Aurelia Molzer
cf9eee64ad
Merge pull request #383 from lilith/chore/fuzz-dict-and-target
...
chore: replace decode_image fuzz target with comprehensive decoder exerciser
2026-04-09 22:26:34 +00:00
Aurelia Molzer
e8103509fa
Merge pull request #385 from lilith/fix/colormap-shl-overflow
...
fix: prevent shift overflow panic in ColorMap size validation
2026-04-09 12:25:51 +00:00
Aurelia Molzer
d760bd3442
Merge pull request #384 from image-rs/renovate-decode-iteration
...
Fix decode example/fuzz with new iteration
2026-04-08 18:49:52 +00:00
A. Molzer
a70e05e51e
Fix decode example/fuzz with new iteration
2026-04-08 20:43:12 +02:00
Aurelia Molzer
dc25c4eaea
Merge pull request #382 from lilith/fix/fax-overflow-panic
...
fix: prevent u16 overflow panics in Group3 fax run-length decode
2026-04-08 05:42:03 +00:00
Aurelia Molzer
2166fd591a
Merge pull request #380 from lilith/fix/ifd-limits-and-packbits
...
fix: enforce ifd_value_size limits and detect PackBits under-decode
2026-04-07 18:13:40 +00:00
Aurelia Molzer
7380611a7b
Merge pull request #381 from lilith/refactor/typed-predictor-slices
...
refactor: use typed slices for float predictor output
2026-04-07 13:03:16 +00:00
Aurelia Molzer
6a3282e9f2
Merge pull request #379 from lilith/main
...
Optimize horizontal and float predictor decode (4-43% faster)
2026-04-06 17:25:25 +00:00
Aurelia Molzer
a42b16ab72
Merge pull request #377 from image-rs/change-reader-of-decoder
...
Transfer decoder to new reader
2026-04-05 08:05:41 +00:00
Aurelia Molzer
8246b55e8f
Merge pull request #378 from image-rs/forgotten-dbg-statement
...
Cleanup dbg! left in error path
2026-04-04 21:16:36 +00:00
A. Molzer
399469f512
Cleanup dbg! left in error path
2026-04-04 23:13:07 +02:00
A. Molzer
740c5cdeea
Transfer decoder to new reader
2026-04-04 15:45:31 +02:00
Aurelia Molzer
86ac5b601e
Merge pull request #375 from image-rs/image-as-option
...
Make decoder's `Image` an option
2026-04-04 11:57:46 +00:00
A. Molzer
97d357d446
Prepare ImageDecoder split, avoid as_mut|unwrap
2026-04-04 10:20:10 +02:00
A. Molzer
61867b46f9
Make decoder's Image an option
...
Instead all methods with mutable self will initialize it on-demand.
There are only few methods that take `&self` and can not do that. For
those that have no error/option return we panic but both of these could
panic previously already. This should be fine by documentation alone. In
particular, the image size can be queried safely.
2026-04-04 10:20:08 +02:00
Aurelia Molzer
0f1f075abb
Merge pull request #372 from image-rs/deprecate-and-hide-tag-reading
...
Deprecate and hide direct tag reading
2026-04-04 08:13:45 +00:00
Aurelia Molzer
5576417abe
Merge pull request #374 from image-rs/value-read-provider
...
Add a `Read`-er for entry values
2026-03-31 16:47:14 +00:00
A. Molzer
52b9cc7a19
Rename EntryBytesReader module
2026-03-31 18:35:19 +02:00
A. Molzer
006f0b0fa4
Directly implement Seek::stream_position
2026-03-31 18:34:16 +02:00
A. Molzer
5b8a2832c3
Add design note
2026-03-31 18:34:15 +02:00
A. Molzer
f93a6380e6
Extra utils for reading tags
2026-03-31 18:34:14 +02:00
A. Molzer
8a1b65fe68
Expand testing
2026-03-31 14:01:39 +02:00
A. Molzer
a2996ab34e
Basic test for EntryByteReader
2026-03-31 09:16:33 +02:00
A. Molzer
f890d22657
Add EntryBytesReader: impl Read + Seek
2026-03-31 09:16:33 +02:00
A. Molzer
6b04bff6b2
Relax Decoder, new interface documentation
...
The bounds `Read + Seek` are not representational so we may remove them
from the struct itself. This also allows us to use more precise bounds
for direct access to the inner stream, especially were that does not
seek.
Groups operations according to their use case.
2026-03-31 09:05:43 +02:00
Aurelia Molzer
017425b200
Merge pull request #373 from image-rs/more-tag-utils
...
Add ValueBuffer::set_value and some documentation
2026-03-31 06:55:52 +00:00
A. Molzer
57d238fd9c
Add ValueBuffer::set and some documentation
2026-03-31 08:47:10 +02:00
A. Molzer
bd0dccef3a
Deprecate Decoder::*tag methods
...
Funnel users towards the `IfdDecoder` instead. That type does not have
a generic over the underlying reader. It also works with a directory of
your own choosing. So the duplicates that should go are those directly
on the decoder.
2026-03-31 05:47:04 +02:00
Aurelia Molzer
db1dbd3699
Merge pull request #371 from image-rs/restructure-buffer
...
Utils for DecodingBuffer et.al
2026-03-28 01:08:27 +00:00
A. Molzer
7491436306
Utils for DecodingBuffer et.al
...
Most of this is slightly gratuitous for now, we have no need internally,
but especially since the enums are non-exhaustive it will probably be
appreciated that you can interact with the buffer at a byte-level.
Additionally we make the extra promise that all sample types correspond
to some supported SampleType tag value. This prepares using the same
buffer for a runtime version of `Encoder::write_image`.
2026-03-28 01:25:07 +01:00
Aurelia Molzer
8e315c6a00
Merge pull request #370 from image-rs/restructure-buffer
...
Restructure decoding's Buffer
2026-03-27 19:48:46 +00:00
A. Molzer
860052a8f4
Rename decoding buffers
...
New names align better with conventions. In particular, Buffer refers to
an owning type.
2026-03-27 19:58:59 +01:00
Aurelia Molzer
1c37855dd9
Merge pull request #369 from lilith/feat/fax3-test-images
...
test: add CCITT Group 3 (Fax3) test images
2026-03-27 17:01:14 +00:00
A. Molzer
5696b0c78b
Move DecodingBuffer related types to module
2026-03-27 17:57:13 +01:00
Aurelia Molzer
4d1daf5c19
Merge pull request #368 from lilith/ci/expand-platform-coverage
...
ci: expand platform coverage, enforce clippy, add MSRV check
2026-03-24 02:20:28 +00:00
Aurelia Molzer
ba7a290ff7
Merge pull request #363 from lilith/feat/non-standard-bit-depths
...
Support non-standard bit depths (sub-byte and extended) with WhiteIsZero fixes
2026-03-12 02:03:49 +00:00
Aurelia Molzer
8a5c2da511
Merge pull request #361 from lilith/feat/palette-support
...
Support palette (ColorMap) image decoding
2026-03-10 04:15:52 +00:00
Aurelia Molzer
c6f6ff4c95
Merge pull request #359 from image-rs/tile-offset-compatibility
...
Tile offset compatibility
2026-03-08 02:29:15 +00:00
A. Molzer
d7d24d0f7c
Changelog entry for tile treatment
2026-03-08 03:00:15 +01:00
A. Molzer
58e93fb8a3
Align tile detection to libtiff
2026-03-08 03:00:15 +01:00
Aurelia Molzer
595e67e5fb
Merge pull request #358 from image-rs/open-behavior-documentation
...
Document `Decoder::open` behavior
2026-03-06 20:15:29 +00:00
A. Molzer
812bc970ba
Document Decoder::open behavior
2026-03-06 21:09:32 +01:00
Aurelia Molzer
82b646298d
Merge pull request #356 from Shnatsel/better-docs
...
Improve documentation on compression and predictor
2026-03-06 19:12:56 +00:00
Aurelia Molzer
c4ab46ad2c
Merge pull request #354 from Shnatsel/derive-debug
...
Derive useful traits on public types
2026-03-06 11:45:45 +00:00
Aurelia Molzer
e8be8656f2
Merge pull request #353 from Shnatsel/non-exhaustive-compression
...
Make Compression enum non-exhaustive
2026-03-06 10:45:28 +00:00
Aurelia Molzer
0ad653433a
Merge pull request #352 from image-rs/iterate-over-raw-tiff-or-exif
...
Open a Tiff without interpreting the first directory
2026-03-06 08:34:19 +00:00
A. Molzer
bf79af8de4
Add Decoder::open, deprecate new
2026-03-06 09:31:23 +01:00
Aurelia Molzer
54dddc4943
Merge pull request #347 from image-rs/iterate-over-raw-tiff-or-exif
...
Enable iteration over raw, malformed tiff or exif
2026-03-06 07:31:13 +00:00
A. Molzer
be9b3a04b9
Expand documentation with TiffHeader
2026-03-06 06:05:32 +01:00
A. Molzer
08f1b25fac
Drafting release notes
2026-03-06 05:35:45 +01:00
A. Molzer
c7b97519a0
Error guarantee on decoder IFD iteration
2026-03-06 04:42:02 +01:00
A. Molzer
e093e15bbe
Remove redundant next_ifd attribute
2026-03-06 03:44:08 +01:00
A. Molzer
647e9b4a81
Add TiffHeader to open a file without seeking
2026-03-06 02:59:45 +01:00
Aurelia Molzer
31c49ea6ef
Merge pull request #351 from Shnatsel/semver-breaking-deflate-level
...
Implement DEFLATE compression level control properly, with a semver break
2026-03-05 20:12:27 +00:00
A. Molzer
cf8f96568e
Expose Decoder::seek_to_directory
2026-03-04 08:59:41 +01:00
A. Molzer
4ff88e658d
Rewrite Decoder::seek_to_image
2026-03-04 05:12:31 +01:00
A. Molzer
14ebf376f3
Move Directory from image into decoder proper
...
This prepares allowing to iterate over a TIFF file with invalid images
while `Image` maintains invariants. For instance we precalculate the
amount of buffer space and verify that the count of strips makes sense
in the constructor—so we do not have to redo that for every other entry
point.
2026-03-04 03:37:42 +01:00
Aurelia Molzer
37578add53
Merge pull request #344 from RunDevelopment/fix-libtiffpic-test-for-windows
...
Fix libtiffpic test for Windows
2026-03-03 20:42:20 +00:00
Aurelia Molzer
2b9476566b
Merge pull request #346 from RunDevelopment/invert-color-as-chunks
...
More optimal code gen for `invert_colors`
2026-03-03 20:30:20 +00:00
Aurelia Molzer
448a0e61d1
Merge pull request #345 from mpospelova/increase-group4reader-height-size
...
Change Group4Reader height dimension from u16 to u32
2026-03-03 20:23:52 +00:00
Aurelia Molzer
d42db25c27
Merge pull request #342 from Shnatsel/float-predictor-encoding
...
Implement floating-point predictor (Predictor 3) encoding
2026-02-26 20:30:08 +00:00
Aurelia Molzer
2ac8be1177
Merge pull request #337 from image-rs/cieluv
...
The whole libtiffpic test suite and SgiLuv compression
2026-02-20 06:47:57 +00:00
A. Molzer
c81d0a9c94
Skip endianess swap for SGI compression
2026-02-14 18:04:07 +01:00
A. Molzer
983c5baea0
Introduce LogL(uv) encodings
2026-02-14 18:04:07 +01:00
A. Molzer
abf3cc617d
Bump MSRV to 1.88
2026-02-14 18:04:07 +01:00
A. Molzer
fb4ee9b377
Convert float images in decode example
2026-02-14 18:04:07 +01:00
A. Molzer
45cd3c3b63
Improve unexpected tile count error
...
Do we even want to error early here? This isn't exactly fatal to reading
the image it is a only nuisance. It becomes crucial only when we are at
the point of reading all the tiles themselves.
2026-02-14 06:55:29 +01:00
A. Molzer
701fcc46b8
Add libtiffpic test suite
...
Two tests are disabled, both related to tiles, since they do not follow
the fully released spec themselves but incidentally decode with libtiff
anyways. The two images (`cramps-tile.tif`, `quad-tile.tif`) are tiled
layout which libtiff detects by the presence of TileWidth/TileHeight
tags. We would detect that by chunks encoded via TileOffsets and
TileByteLengths tags. However the images encoded their chunk data into
the StripOffsets tag; additionally they contain a RowsPerStrip value
anyways.
Tests disabled as this is to be resolved in a separate issue (#338 ) with
a decision on treatment of this situation (strictness setting or copying
libtiff, also error late for mismatched lengths).
2026-02-14 06:55:29 +01:00
Aurelia Molzer
e41159ce05
Merge pull request #340 from image-rs/release-0.11.3
...
Metadata for 0.11.3 release
2026-02-10 04:17:11 +00:00
A. Molzer
03979faef8
Metadata for 0.11.3 release
2026-02-07 08:38:03 +01:00
Aurelia Molzer
857973cb21
Merge pull request #339 from image-rs/file-listing-and-utils
...
File listing utils and example
2026-02-07 07:33:24 +00:00
A. Molzer
cef21c47fb
Add example listing a files directories
2026-02-07 08:22:34 +01:00
Aurelia Molzer
99a7b8cba7
Merge pull request #334 from image-rs/release-0.11.2
...
Release notes for 0.11.2
2026-01-25 02:36:26 +00:00
A. Molzer
418ea182c3
Release notes for 0.11.2
2026-01-25 00:33:33 +01:00
Aurelia Molzer
529fa64e13
Merge pull request #333 from image-rs/read-image-all-planes
...
Make `read_image_to_buffer` read out all planes
2026-01-24 23:28:07 +00:00
A. Molzer
3d6b94b65a
Make read_image_to_buffer read out all planes
2026-01-24 21:24:55 +01:00
Aurelia Molzer
a51b23091e
Merge pull request #332 from image-rs/public-example-for-pam
...
Public ColorType::{num_samples, bit_depth}
2026-01-24 04:26:31 +00:00
A. Molzer
ac65bd8477
Public ColorType::{num_samples, bit_depth}
...
This makes the decode example capable of writing correct PAM images in
many more cases, such as bilevel encoded (Fax3) masks.
2026-01-24 05:24:19 +01:00
Aurelia Molzer
1bd6293857
Merge pull request #329 from image-rs/fixup-value-buffer-debug-condition
...
Fix debug condition of ValueBuffer
2026-01-13 14:53:12 +00:00
A. Molzer
87341f9075
Fix debug condition of ValueBuffer
...
Off-by-one, this was meant to check a minimum length that includes
equality but instead tested a valid index.
2026-01-13 15:37:22 +01:00
Aurelia Molzer
43343f64cd
Merge pull request #328 from image-rs/reduce-package-size
...
Remove benchmark images from distribution
2026-01-13 09:12:59 +00:00
Aurelia Molzer
be04326264
Remove benchmark images from distribution
2026-01-13 10:06:59 +01:00
Aurelia Molzer
93a68f52f5
Merge pull request #327 from image-rs/release-0.11.1
...
Metadata for release 0.11.1
2026-01-13 09:04:30 +00:00
A. Molzer
5f329840c8
Metadata for release 0.11.1
2026-01-12 00:43:29 +01:00
Aurelia Molzer
1d138a5568
Merge pull request #326 from image-rs/encode-values-from-buffer
...
Encode values from buffer
2026-01-11 22:09:29 +00:00
A. Molzer
9a23090b6e
Provide write_entry_bytes
...
This complements the entry API of the encoder with the byte slice based
method. Note we don't provide it for writing raw data, here a
`std::io::Write` would be more appropriate and we should not attempt to
make it `write_all`, nor compress. You'd get all the benefits of the
other API through `[u8]: TiffValue` since that interface is otherwise
type agnostic and `u8` specifically is endian agnostic.
2026-01-11 22:59:34 +01:00
A. Molzer
9d409433e8
Rename write_tag_value to write_tag_buf
...
We have not released this yet, let's align these names before it is too
late. The decoder adopted the `_buf` suffix and I find it more
convincing than the more generic `_value` (that also confusingly shares
it with `TiffValue`).
2026-01-11 22:29:08 +01:00
Aurelia Molzer
cf680424d9
Merge pull request #325 from image-rs/decode-values-into-buffer
...
Decode tag values into buffer
2026-01-11 19:19:41 +00:00
A. Molzer
d3b777c961
Testing access through alternate tag reads
2026-01-11 17:55:15 +01:00
A. Molzer
24b008a7c3
Read tag values into byte slice
2026-01-11 17:20:04 +01:00
A. Molzer
34bd1da99e
Read raw values into ValueBuffer
2026-01-11 17:20:04 +01:00