예제 #1
0
파일: Image.php 프로젝트: Umz/ImpressPages
 /**
  * Takes memory required to process supplied image file and a bit more for future PHP operations.
  * @param resource $imageFile
  * @return bool true on success
  */
 protected function getMemoryNeeded($imageFile)
 {
     if (!file_exists($imageFile)) {
         return 0;
     }
     $imageInfo = getimagesize($imageFile);
     if (!isset($imageInfo['channels']) || !$imageInfo['channels']) {
         $imageInfo['channels'] = 4;
     }
     if (!isset($imageInfo['bits']) || !$imageInfo['bits']) {
         $imageInfo['bits'] = 8;
     }
     if (!isset($imageInfo[0])) {
         $imageInfo[0] = 1;
     }
     if (!isset($imageInfo[1])) {
         $imageInfo[1] = 1;
     }
     $memoryNeeded = round(($imageInfo[0] * $imageInfo[1] * $imageInfo['bits'] * $imageInfo['channels'] / 8 + Pow(2, 16)) * 1.65);
     $success = \Ip\Internal\System\Helper\SystemInfo::allocateMemory($memoryNeeded);
     return $success;
 }
예제 #2
0
 /**
  * @param $imageFile
  * @return bool|null
  */
 public static function getMemoryNeeded($imageFile)
 {
     $imageInfo = getimagesize($imageFile);
     if (!isset($imageInfo['channels']) || !$imageInfo['channels']) {
         $imageInfo['channels'] = 4;
     }
     if (!isset($imageInfo['bits']) || !$imageInfo['bits']) {
         $imageInfo['bits'] = 8;
     }
     if (!isset($imageInfo[0])) {
         $imageInfo[0] = 1;
     }
     if (!isset($imageInfo[1])) {
         $imageInfo[1] = 1;
     }
     $a64kb = 65536;
     $bytesNeeded = round(($imageInfo[0] * $imageInfo[1] * $imageInfo['bits'] * $imageInfo['channels'] / 8 + $a64kb) * 1.65);
     return \Ip\Internal\System\Helper\SystemInfo::allocateMemory($bytesNeeded);
 }