Browse Source

Don't adaptively encode indexed pngs

Former-commit-id: fbb4508b15ccb81f78bae6cb0e969e6ee7a34350
af/merge-core
James Jackson-South 10 years ago
parent
commit
4ec2fe9aa5
  1. 2100
      src/ImageProcessorCore/Formats/Jpg/JpegDecoderCore.cs
  2. 1
      src/ImageProcessorCore/Formats/Jpg/JpegDecoderCore.cs.REMOVED.git-id
  3. 28
      src/ImageProcessorCore/Formats/Png/PngEncoderCore.cs
  4. 3
      tests/ImageProcessorCore.Tests/TestImages/Formats/Bmp/Car.bmp
  5. 1
      tests/ImageProcessorCore.Tests/TestImages/Formats/Bmp/Car.bmp.REMOVED.git-id
  6. 3
      tests/ImageProcessorCore.Tests/TestImages/Formats/Bmp/neg_height.bmp
  7. 1
      tests/ImageProcessorCore.Tests/TestImages/Formats/Bmp/neg_height.bmp.REMOVED.git-id
  8. 3
      tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/Calliphora.jpg
  9. 1
      tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/Calliphora.jpg.REMOVED.git-id
  10. 3
      tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/Floorplan.jpeg
  11. 1
      tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/Floorplan.jpeg.REMOVED.git-id
  12. 3
      tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/cmyk.jpg
  13. 1
      tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/cmyk.jpg.REMOVED.git-id
  14. 3
      tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/gamma_dalai_lama_gray.jpg
  15. 1
      tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/gamma_dalai_lama_gray.jpg.REMOVED.git-id
  16. 3
      tests/ImageProcessorCore.Tests/TestImages/Formats/Png/blur.png
  17. 1
      tests/ImageProcessorCore.Tests/TestImages/Formats/Png/blur.png.REMOVED.git-id
  18. 3
      tests/ImageProcessorCore.Tests/TestImages/Formats/Png/splash.png
  19. 1
      tests/ImageProcessorCore.Tests/TestImages/Formats/Png/splash.png.REMOVED.git-id

2100
src/ImageProcessorCore/Formats/Jpg/JpegDecoderCore.cs

File diff suppressed because it is too large

1
src/ImageProcessorCore/Formats/Jpg/JpegDecoderCore.cs.REMOVED.git-id

@ -1 +0,0 @@
cee4b682b4cfc0f0cef3cafb5b089c780d1cb4d1

28
src/ImageProcessorCore/Formats/Png/PngEncoderCore.cs

@ -346,7 +346,7 @@ namespace ImageProcessorCore.Formats
List<byte> result = new List<byte>();
foreach (var encodedScanline in filteredScanlines)
foreach (byte[] encodedScanline in filteredScanlines)
{
result.AddRange(encodedScanline);
}
@ -366,17 +366,25 @@ namespace ImageProcessorCore.Formats
{
List<Tuple<byte[], int>> candidates = new List<Tuple<byte[], int>>();
byte[] sub = SubFilter.Encode(rawScanline, byteCount);
candidates.Add(new Tuple<byte[], int>(sub, this.CalculateTotalVariation(sub)));
if (this.PngColorType == PngColorType.Palette)
{
byte[] none = NoneFilter.Encode(rawScanline);
candidates.Add(new Tuple<byte[], int>(none, this.CalculateTotalVariation(none)));
}
else
{
byte[] sub = SubFilter.Encode(rawScanline, byteCount);
candidates.Add(new Tuple<byte[], int>(sub, this.CalculateTotalVariation(sub)));
byte[] up = UpFilter.Encode(rawScanline, previousScanline);
candidates.Add(new Tuple<byte[], int>(up, this.CalculateTotalVariation(up)));
byte[] up = UpFilter.Encode(rawScanline, previousScanline);
candidates.Add(new Tuple<byte[], int>(up, this.CalculateTotalVariation(up)));
byte[] average = AverageFilter.Encode(rawScanline, previousScanline, byteCount);
candidates.Add(new Tuple<byte[], int>(average, this.CalculateTotalVariation(average)));
byte[] average = AverageFilter.Encode(rawScanline, previousScanline, byteCount);
candidates.Add(new Tuple<byte[], int>(average, this.CalculateTotalVariation(average)));
byte[] paeth = PaethFilter.Encode(rawScanline, previousScanline, byteCount);
candidates.Add(new Tuple<byte[], int>(paeth, this.CalculateTotalVariation(paeth)));
byte[] paeth = PaethFilter.Encode(rawScanline, previousScanline, byteCount);
candidates.Add(new Tuple<byte[], int>(paeth, this.CalculateTotalVariation(paeth)));
}
int lowestTotalVariation = int.MaxValue;
int lowestTotalVariationIndex = 0;
@ -603,7 +611,7 @@ namespace ImageProcessorCore.Formats
/// <param name="stream">The stream.</param>
private void WriteDataChunks(Stream stream)
{
byte[] data = this.EncodePixelData();
byte[] data = this.EncodePixelData();
byte[] buffer;
int bufferLength;

3
tests/ImageProcessorCore.Tests/TestImages/Formats/Bmp/Car.bmp

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9d3a4a30cd67db6ded1e57126c7ba275404703e64b3dfb1c9c711128c15b0124
size 810054

1
tests/ImageProcessorCore.Tests/TestImages/Formats/Bmp/Car.bmp.REMOVED.git-id

@ -1 +0,0 @@
edd8ac1feb2c4649e6f5aa80af8d4cf33642a546

3
tests/ImageProcessorCore.Tests/TestImages/Formats/Bmp/neg_height.bmp

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:81437b88a5d92fcb545fae4991643a0c73d95d0277dac0b79074971780008c8c
size 6220854

1
tests/ImageProcessorCore.Tests/TestImages/Formats/Bmp/neg_height.bmp.REMOVED.git-id

@ -1 +0,0 @@
8f864b82464c595d7a81087d018db9994506e221

3
tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/Calliphora.jpg

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:67172fcab405f914587b88cd1106328e6b24ab59d622ba509dcc99509951ff5c
size 254766

1
tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/Calliphora.jpg.REMOVED.git-id

@ -1 +0,0 @@
5d446f64d0636f6ad7e9f82625eeff89ef394fe2

3
tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/Floorplan.jpeg

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:de00b34b78dfa0886c93d8dd5cede27b4940d5c620e44631e77e6dc8838befc3
size 161577

1
tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/Floorplan.jpeg.REMOVED.git-id

@ -1 +0,0 @@
5a1eaf806b7f3793d3db41c85bac6366584bce83

3
tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/cmyk.jpg

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:33e3546a64df7fa1d528441926421b193e399a83490a6307762fb7eee9640bf0
size 611572

1
tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/cmyk.jpg.REMOVED.git-id

@ -1 +0,0 @@
30e88773ededd890ad97f0a5cfac372e1af07aa5

3
tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/gamma_dalai_lama_gray.jpg

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3d92a88b04518e266b98d9d2f5b4eb88f3f91c332d3397ea859bab8cabc41185
size 84887

1
tests/ImageProcessorCore.Tests/TestImages/Formats/Jpg/gamma_dalai_lama_gray.jpg.REMOVED.git-id

@ -1 +0,0 @@
56cbc3371def2882d1ead5d4d2456550f2b8d72c

3
tests/ImageProcessorCore.Tests/TestImages/Formats/Png/blur.png

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:10df946d3d6a9832bacd9ac2587b890c348d17731412c8fd17c34f66f35d9c94
size 183768

1
tests/ImageProcessorCore.Tests/TestImages/Formats/Png/blur.png.REMOVED.git-id

@ -1 +0,0 @@
f3c65955eae84d00c5a0343c7e2aa3610a7d9df7

3
tests/ImageProcessorCore.Tests/TestImages/Formats/Png/splash.png

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f4c13422913f1c1910f8dd607236e79b4a5c7053deb8ce1c8be8372eca7465fb
size 245033

1
tests/ImageProcessorCore.Tests/TestImages/Formats/Png/splash.png.REMOVED.git-id

@ -1 +0,0 @@
0964ae9744027325bd6a2a19b2247c39f8349ca1
Loading…
Cancel
Save