mirror of
https://github.com/UglyToad/PdfPig.git
synced 2025-07-17 04:15:03 +08:00
Fix for Issue#549. Skip over Jpg segments rather than use bruce force to find segment start marker
This commit is contained in:
parent
88aaddcf26
commit
3a848c090c
Binary file not shown.
After Width: | Height: | Size: 101 KiB |
38
src/UglyToad.PdfPig.Tests/Images/JpegHandlerTests.cs
Normal file
38
src/UglyToad.PdfPig.Tests/Images/JpegHandlerTests.cs
Normal file
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -133,9 +133,4 @@
|
|||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="Images\" />
|
|
||||||
<Folder Include="Images\Files\" />
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -28,6 +28,19 @@
|
|||||||
{
|
{
|
||||||
switch (marker)
|
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.StartOfBaselineDctFrame:
|
||||||
case JpegMarker.StartOfProgressiveDctFrame:
|
case JpegMarker.StartOfProgressiveDctFrame:
|
||||||
{
|
{
|
||||||
@ -55,6 +68,7 @@
|
|||||||
case JpegMarker.ApplicationSpecific13:
|
case JpegMarker.ApplicationSpecific13:
|
||||||
case JpegMarker.ApplicationSpecific14:
|
case JpegMarker.ApplicationSpecific14:
|
||||||
case JpegMarker.ApplicationSpecific15:
|
case JpegMarker.ApplicationSpecific15:
|
||||||
|
default:
|
||||||
{
|
{
|
||||||
var length = ReadShort(stream, shortBuffer);
|
var length = ReadShort(stream, shortBuffer);
|
||||||
stream.Seek(length - 2, SeekOrigin.Current);
|
stream.Seek(length - 2, SeekOrigin.Current);
|
||||||
|
Loading…
Reference in New Issue
Block a user