You've already forked lazarus-ccr
fpspreadsheet: Improved detection of pixel resolution for variants of bmp file format.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4567 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -139,13 +139,20 @@ var
|
|||||||
info: TBitmapInfoHeader;
|
info: TBitmapInfoHeader;
|
||||||
begin
|
begin
|
||||||
result := False;
|
result := False;
|
||||||
|
dpiX := 0;
|
||||||
|
dpiY := 0;
|
||||||
if AStream.Read(header{%H-}, SizeOf(header)) <> SizeOf(header) then Exit;
|
if AStream.Read(header{%H-}, SizeOf(header)) <> SizeOf(header) then Exit;
|
||||||
if LEToN(header.bfType) <> BMP_MAGIC_WORD then Exit;
|
if LEToN(header.bfType) <> BMP_MAGIC_WORD then Exit;
|
||||||
if AStream.Read(info{%H-}, SizeOf(info)) <> SizeOf(info) then Exit;
|
if AStream.Read(info{%H-}, SizeOf(info)) <> SizeOf(info) then Exit;
|
||||||
AWidth := LEToN(info.Width);
|
AWidth := LEToN(info.Width);
|
||||||
AHeight := abs(LEToN(info.Height));
|
AHeight := abs(LEToN(info.Height)); // can be negative in case of "top-down" image
|
||||||
dpiX := LEToN(info.XPelsPerMeter) * 0.0254;
|
if info.Size >= 40 then
|
||||||
dpiY := LEToN(info.YPelsPerMeter) * 0.0254;
|
begin
|
||||||
|
dpiX := LEToN(info.XPelsPerMeter) * 0.0254;
|
||||||
|
dpiY := LEToN(info.YPelsPerMeter) * 0.0254;
|
||||||
|
end;
|
||||||
|
if dpiX = 0 then dpiX := 72;
|
||||||
|
if dpiY = 0 then dpiY := 72;
|
||||||
Result := true;
|
Result := true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -904,7 +911,7 @@ initialization
|
|||||||
{0} itPNG := RegisterImageType('image/png', 'png', @GetPNGSize);
|
{0} itPNG := RegisterImageType('image/png', 'png', @GetPNGSize);
|
||||||
{1} itJPEG := RegisterImageType('image/jpeg', 'jpg|jpeg|jfif|jfe', @GetJPGSize);
|
{1} itJPEG := RegisterImageType('image/jpeg', 'jpg|jpeg|jfif|jfe', @GetJPGSize);
|
||||||
{2} itTIFF := RegisterImageType('image/tiff', 'tif|tiff', @GetTIFSize);
|
{2} itTIFF := RegisterImageType('image/tiff', 'tif|tiff', @GetTIFSize);
|
||||||
{3} itBMP := RegisterImageType('image/bmp', 'bmp', @GetBMPSize);
|
{3} itBMP := RegisterImageType('image/bmp', 'bmp|dib', @GetBMPSize);
|
||||||
{4} itGIF := RegisterImageType('image/gif', 'gif', @GetGIFSize);
|
{4} itGIF := RegisterImageType('image/gif', 'gif', @GetGIFSize);
|
||||||
{5} itSVG := RegisterImageType('image/svg+xml', 'svg', @GetSVGSize);
|
{5} itSVG := RegisterImageType('image/svg+xml', 'svg', @GetSVGSize);
|
||||||
{6} itWMF := RegisterImageType('application/x-msmetafile', 'wmf', @GetWMFSize);
|
{6} itWMF := RegisterImageType('application/x-msmetafile', 'wmf', @GetWMFSize);
|
||||||
|
Reference in New Issue
Block a user