Releases: Roughsketch/imagesize
v0.13.0
What's Changed
- List Avif format in README.md by @seanaye in #33
- Add support for ILBM by @KateMorley in #36
- Distinguish between HEIF and HEIC by @rsuu in #34
- Mark ImageType as non-exhaustive by @Roughsketch in #40
New Contributors
- @seanaye made their first contribution in #33
- @KateMorley made their first contribution in #36
Also thanks to @virtualritz for initially introducing some formatting changes and bumping the edition.
Full Changelog: v0.12.0...v0.13.0
v0.12.0
Auto change log does not fully track everything since not everything went through PRs. I'll likely be more consistent with this in the future.
Overall changes:
New Formats
- AVIF
- DDS
- EXR
- Farbfeld
- HDR
- KTX2
- PNM
- QOI
- TGA
- VTF
Fixes
- Fixed HEIF format returning an error when attribute field size was exactly 8
- Fixed TIFF having stray debug asserts that may cause panics in debug builds
Other changes
- Restructured code base to split out formats into their own individual source files
- Reordered
ImageType
enum so that types will now be in alphabetical order - Added benchmarking via criterion to dev dependencies
- Modified how tests check for values
- Modified README so have examples that actually compile
- Added doc comment about minimum data size required for methods to work (12 bytes)
What's Changed
- Add EXR/HDR/TGA/DDS/KTX2/QOI support by @AllenDang in #25
- Handle EXR long names flag by @Roughsketch in #27
- Handle HDR files orientations by @Roughsketch in #26
- Add support for VTF by @Roughsketch in #28
- Add support for PNM by @Roughsketch in #29
New Contributors
- @AllenDang made their first contribution in #25
Full Changelog: v0.11.0...v0.12.0
v0.11.0
What's Changed
- Update tests so they aren't packaged with crate by @Roughsketch in #22
- Support aseprite by @rsuu in #20
New Contributors
Full Changelog: v0.10.1...v0.11.0
v0.10.1
ICO support and ability to use cursors instead of raw buffers
Thanks to those who submitted PRs to make this release!
For this release the main changes are the following:
- ICO support was added. By default ICO will use the largest size found as the dimensions returned.
- A new method
reader_size
has been added which allows getting dimensions from anything implementingBufRead + Seek
.
What's Changed
- Add support for ICO by @P1n3appl3 in #17
- Add reader_size by @kailes in #18
New Contributors
- @P1n3appl3 made their first contribution in #17
- @kailes made their first contribution in #18
Full Changelog: v0.9.0...v0.10.0
JXL Support
This release has two changes. The main one is #13 which adds support for JXL images. This isn't a format I was aware of but @oscar-rc1 was kind enough to create a PR to add it.
Behind the scenes there was also some minor refactoring which may be expanded later. The interface should stay the same but I may work on restructuring things further in the future. I doubt there will be any forward facing interface changes though.
Support for lossless WEBP images
Recently I've been pointed to a great project that also deals with image size. I was curious as to how the support for some of the formats I don't include works, and while looking at that I noticed there was a type of webp I had never encountered before in the wild. In order to be thorough, I've patched up this missing hole which means lossless webp images are now supported.
As for the other missing formats, out of the ones they have that this library doesn't the only reasonable candidate for inclusion would be j2c, jp2, jcx, and mng, but I have personally never seen these formats and I don't want to include something unless it's actually used.
Internally there was also some cleanup regarding the interfaces and organization of tests.
Rework JPEG parsing to handle markers properly
The previous implementation of JPEG parsing relied on tags being the first thing encountered in an image, and having metadata not get in the way. This was a poor implementation and led to issues where JPEG files with EXIF data could show up as corrupted or report an improper size.
As of 0.8.7 the JPEG parsing has been reworked to instead read each JPEG marker, determine whether it is the dimension tag, and if not skip the entire length of the tag. This prevents the library from getting stuck inside metadata sections and reading unrelated data as invalid markers.
Clean up SOF check
After publishing 0.8.5 I was made aware that not all SOF markers are dimensions. In particular FF C4
, FF C8
, and FF CC
do not contain valid dimension data. Instead of leaving this bug hidden inside, I've decided to push an update again.
I've also included a bunch of clippy fixes, but this is just to make me feel better about myself.
Accept all JPEG SOF variants
Previously I've only encountered JPG images using SOF0 or SOF2 (FF C0 or FF C2). However, #10 brought to my attention an SOF1 image. I looked up the SOF marker definition and it looks like C0 to CF are all valid SOF markers, so I've changed the check to accept them all.
I am missing tests for C3 to CF so I can't guarantee they are all the same, but if something breaks please open an issue. As of right now all JPG test images in the repo are working.