From 3a848c090cb9d91bb376f08babcd4fccfff3f600 Mon Sep 17 00:00:00 2001 From: Fred Natzke Date: Thu, 16 Feb 2023 15:55:42 +1000 Subject: [PATCH] Fix for Issue#549. Skip over Jpg segments rather than use bruce force to find segment start marker --- ...7-ccb746b0-dc28-4616-bcb1-4ad685f81876.jpg | Bin 0 -> 103299 bytes .../Images/JpegHandlerTests.cs | 38 ++++++++++++++++++ .../UglyToad.PdfPig.Tests.csproj | 5 --- src/UglyToad.PdfPig/Images/JpegHandler.cs | 18 ++++++++- 4 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 src/UglyToad.PdfPig.Tests/Images/Files/Jpg/218995467-ccb746b0-dc28-4616-bcb1-4ad685f81876.jpg create mode 100644 src/UglyToad.PdfPig.Tests/Images/JpegHandlerTests.cs diff --git a/src/UglyToad.PdfPig.Tests/Images/Files/Jpg/218995467-ccb746b0-dc28-4616-bcb1-4ad685f81876.jpg b/src/UglyToad.PdfPig.Tests/Images/Files/Jpg/218995467-ccb746b0-dc28-4616-bcb1-4ad685f81876.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d9875e942bf601903f569a5f48a1d32a94c17ef0 GIT binary patch literal 103299 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≺vDM^&rNT1sWRzHJc=W(p(RK|EA+ zytfiZmj*~nA^HHVZFkIB`R`@96Z#NPKy{HC*9|eim_Bb zwTEQ+G{$OiYN^k6KhDY@IT@^4%EKb2z!9QOCKkol%tXf8agkI0qf{dU&?uxwMdW#g z&yJhw$XX}yMs~-!$-xJ6!x0wBCutH#M_uJ2y&VJn@zeP|Z$`fJnrN!qpIr zSM#-oca|97u0Gkr+q1qngj=ES?9#)JBGi|V%0ec#k;#7t0;egVwwS(2>XWf~f@;wgNs!Fnl` z#Knw)n-Vf(=XCN=$!Q%H5ZtFwCwAiTt(6-)zC>;zXQoT?Xg6sju%?T`g{9r`Y)F5` z<1_CHrAF6uPrPQK9S5y!)m=|TmELomJ@3pDojU5zz8)p)@zjHh1#jn=y!!5jwpu!g zzL{f4l%1qxj%Bc1g#JaZR_*adaR+KZHuG!KFXRPv4yy9pmAPL02c&6}UufXblG^(d-j!8DLcQu*Z|FFbfmPnDAEpiFMl}WO=#5X9!9dO|m1Aybr z4l{F%PodOi03+`OKj;omM^4`6

9~W(}?(1n>|scj;R6DVme*acxCV%3R5G7CV3^5 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 H|9=wzhK;$4 literal 0 HcmV?d00001 diff --git a/src/UglyToad.PdfPig.Tests/Images/JpegHandlerTests.cs b/src/UglyToad.PdfPig.Tests/Images/JpegHandlerTests.cs new file mode 100644 index 00000000..45d6d96b --- /dev/null +++ b/src/UglyToad.PdfPig.Tests/Images/JpegHandlerTests.cs @@ -0,0 +1,38 @@ +namespace UglyToad.PdfPig.Tests.Images +{ + using System; + using System.IO; + using Xunit; + using JpegHandler = UglyToad.PdfPig.Images.JpegHandler; + + public class JpegHandlerTests + { + + + [Fact] + public void CanGetJpegInformation() + { + + var dataJpg = LoadJpg("218995467-ccb746b0-dc28-4616-bcb1-4ad685f81876.jpg"); + + using (var ms = new MemoryStream(dataJpg)) + { + var jpegInfo = JpegHandler.GetInformation(ms); + + Assert.Equal(8, jpegInfo.BitsPerComponent); + Assert.Equal(2290, jpegInfo.Height); + Assert.Equal(1648, jpegInfo.Width); + } + } + + + + private static byte[] LoadJpg(string name) + { + var baseFolder = Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory); + var JpgFilesFolder = Path.Combine(baseFolder, "..", "..", "..", "Images", "Files", "Jpg"); ; + var JpgFilePath = Path.Combine(JpgFilesFolder, name); + return File.ReadAllBytes(JpgFilePath); + } + } +} diff --git a/src/UglyToad.PdfPig.Tests/UglyToad.PdfPig.Tests.csproj b/src/UglyToad.PdfPig.Tests/UglyToad.PdfPig.Tests.csproj index 878d9824..6879cdc1 100644 --- a/src/UglyToad.PdfPig.Tests/UglyToad.PdfPig.Tests.csproj +++ b/src/UglyToad.PdfPig.Tests/UglyToad.PdfPig.Tests.csproj @@ -133,9 +133,4 @@ PreserveNewest - - - - - diff --git a/src/UglyToad.PdfPig/Images/JpegHandler.cs b/src/UglyToad.PdfPig/Images/JpegHandler.cs index 46c19726..eb4c70af 100644 --- a/src/UglyToad.PdfPig/Images/JpegHandler.cs +++ b/src/UglyToad.PdfPig/Images/JpegHandler.cs @@ -1,6 +1,6 @@ namespace UglyToad.PdfPig.Images { - using System; + using System; using System.IO; internal static class JpegHandler @@ -28,6 +28,19 @@ { switch (marker) { + case JpegMarker.StartOfImage: + case JpegMarker.EndOfImage: + case JpegMarker.Restart0: + case JpegMarker.Restart1: + case JpegMarker.Restart2: + case JpegMarker.Restart3: + case JpegMarker.Restart4: + case JpegMarker.Restart5: + case JpegMarker.Restart6: + case JpegMarker.Restart7: + + // No length markers + break; case JpegMarker.StartOfBaselineDctFrame: case JpegMarker.StartOfProgressiveDctFrame: { @@ -55,6 +68,7 @@ case JpegMarker.ApplicationSpecific13: case JpegMarker.ApplicationSpecific14: case JpegMarker.ApplicationSpecific15: + default: { var length = ReadShort(stream, shortBuffer); stream.Seek(length - 2, SeekOrigin.Current); @@ -105,7 +119,7 @@ } if (previous.HasValue && previous.Value == MarkerStart && b != MarkerStart) - { + { return b; }