mikuli.cz

:)
git clone https://git.sr.ht/~ashymad/mikuli.cz
Log | Files | Refs

commit caca77779182a75fac28b64983cdd8891df56750
parent e8cd6d9cbfa544a7394913755f1e12ab2f442fe5
Author: markseu <mark2011@mayberg.se>
Date:   Thu, 12 Dec 2013 23:35:36 +0100

Better image detection

Diffstat:
Msystem/core/core.php | 21++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/system/core/core.php b/system/core/core.php @@ -5,7 +5,7 @@ // Yellow main class class Yellow { - const Version = "0.2.3"; + const Version = "0.2.4"; var $page; //current page data var $pages; //current page tree from file system var $config; //configuration @@ -1638,20 +1638,23 @@ class YellowToolbox $height = (ord($dataHeader[14])<<8) + ord($dataHeader[15]); } } else if(substru($fileName, -3) == "jpg") { - $dataBuffer = fread($fileHandle, 2048); + $dataBufferSize = min(filesize($fileName), 8192); + $dataBuffer = fread($fileHandle, $dataBufferSize); $dataSignature = substrb($dataBuffer, 0, 11); if(!feof($fileHandle) && $dataSignature=="\xff\xd8\xff\xe0\x00\x10JFIF\0") { - $marker = substrb($dataBuffer, 20, 2); - $length = (ord($dataBuffer[22])<<8) + ord($dataBuffer[23]) + 2; - $pos = 158 + ($marker=="\xff\xe1" ? $length : 0); - if($pos+8 < 2048) + for($pos=20; $pos+8<$dataBufferSize; $pos+=$length) { - $width = (ord($dataBuffer[$pos+7])<<8) + ord($dataBuffer[$pos+8]); - $height = (ord($dataBuffer[$pos+5])<<8) + ord($dataBuffer[$pos+6]); + if($dataBuffer[$pos] != "\xff") break; + if($dataBuffer[$pos+1]=="\xc0" || $dataBuffer[$pos+1]=="\xc2") + { + $width = (ord($dataBuffer[$pos+7])<<8) + ord($dataBuffer[$pos+8]); + $height = (ord($dataBuffer[$pos+5])<<8) + ord($dataBuffer[$pos+6]); + break; + } + $length = (ord($dataBuffer[$pos+2])<<8) + ord($dataBuffer[$pos+3]) + 2; } } - } fclose($fileHandle); }