<commit_before>### 0.6.0 - March 28th 2019

* Added: `IImage::ApplyColorMap`, which will apply a colormap to the image, overwriting previous data and metadata like format, stride, pixel depth, etc. An example of a colormap is when an image only uses 256 colors. Instead of consuming 32 bits per pixel on disk, the image data instead will consist of 8 bit indices into the colormap located in the header of an image.
* Support Targa images orientated in the top left corner.
* Targa images encoded in the top right or bottom right corners (two extremely rare formats) fallback to bottom left corner decoding.
* Fix errors or incorrect decoding of dds images with widths and heights that aren't divisible by their block size.
* Fix `MipMapCount` misspelling in `DdsHeader`

### 0.5.2 - August 2nd 2018

* Include Mipmap data as part of `IImage::Data` for DDS images that skipped decoding
* Recognize and decode ATI2 dds images

### 0.5.1 - May 8th 2018

* Expose `BitsPerPixel` in `IImage`
* Add configuration to the decoding process via `PfimConfig`:
  * Configurable buffer size for chunk decoding
  * Allow opt-out of DDS BC decompression to allow for GPU offload.<commit_msg>Update release notes for 0.7<commit_after>### 0.7.0

* Added: `Pfim.FromStream` to decode tga or dds image from a stream. Pfim will heuristically determine what image based on the header.
* Added: `IImageAllocator` that will allow one to pool intermediate byte buffers as well as the resulting data buffer. This is to reduce memory usage and GC pressure. Benchmarks have naive pooling implementations showing up to a 3x performance improvement. Set a custom allocator through `PfimConfig`
* Changed: Targa color maps are applied by default (so no need to write `IImage::ApplyColorMap` every time). If this behavior is not desired, one can set `applyColorMap` to false in `PfimConfig`.
* Changed: `IImage` implements `IDisposable` (so that the allocator can reclaim the data buffer). While disposing an image is only necessary when a custom allocator is supplied, the best practice is to still dispose an image:

```csharp
using (var image = Pfim.FromFile(file)) { }
```

* Changed: `Pfim.FromFile` no longer determines the image type by file extension. Instead it will heuristically determine the image type based on the file header.
* Changed: Exception thrown on invalid targa image types (3rd byte in the header) 

### 0.6.0 - March 28th 2019

* Added: `IImage::ApplyColorMap`, which will apply a colormap to the image, overwriting previous data and metadata like format, stride, pixel depth, etc. An example of a colormap is when an image only uses 256 colors. Instead of consuming 32 bits per pixel on disk, the image data instead will consist of 8 bit indices into the colormap located in the header of an image.
* Support Targa images orientated in the top left corner.
* Targa images encoded in the top right or bottom right corners (two extremely rare formats) fallback to bottom left corner decoding.
* Fix errors or incorrect decoding of dds images with widths and heights that aren't divisible by their block size.
* Fix `MipMapCount` misspelling in `DdsHeader`

### 0.5.2 - August 2nd 2018

* Include Mipmap data as part of `IImage::Data` for DDS images that skipped decoding
* Recognize and decode ATI2 dds images

### 0.5.1 - May 8th 2018

* Expose `BitsPerPixel` in `IImage`
* Add configuration to the decoding process via `PfimConfig`:
  * Configurable buffer size for chunk decoding
  * Allow opt-out of DDS BC decompression to allow for GPU offload.
{'fraction_non_alphanumeric': 0.059520451339915376, 'fraction_numerical': 0.02002820874471086, 'mean_word_length': 4.463790446841294, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '59657', 'n_tokens_mistral': 1032, 'n_tokens_neox': 931, 'n_words': 533}