X-Git-Url: https://git.cweiske.de/surrogator.git/blobdiff_plain/90769e01dd688bd9f6295905df86197470a69852..34080378b403776aebc206a2e23a1ba2e7d0aa97:/surrogator.php diff --git a/surrogator.php b/surrogator.php index 07556bb..6519f5b 100755 --- a/surrogator.php +++ b/surrogator.php @@ -1,5 +1,18 @@ #!/usr/bin/env php + * @license http://www.gnu.org/licenses/agpl.html AGPLv3 or later + * @link https://sourceforge.net/p/surrogator/ + */ namespace surrogator; $cfgFile = __DIR__ . '/data/surrogator.config.php'; if (!file_exists($cfgFile)) { @@ -39,6 +52,11 @@ foreach ($argv as $arg) { } } +/** + * Echos the --help screen. + * + * @return void + */ function showHelp() { echo <<getPathname(); $fileName = $fileInfo->getFilename(); $ext = strtolower(substr($fileName, strrpos($fileName, '.') + 1)); @@ -107,7 +141,7 @@ foreach ($dir as $fileInfo) { . substr($fileName, 0, -strlen($ext)) . 'png'; log('processing ' . $fileName, 1); - if (image_uptodate($origPath, $squarePath)) { + if (imageUptodate($origPath, $squarePath)) { log(' image up to date', 2); continue; } @@ -118,6 +152,8 @@ foreach ($dir as $fileInfo) { if ($fileName == 'default.png') { $md5 = $sha256 = 'default'; + } else if ($fileName == 'mm.png') { + $md5 = $sha256 = 'mm'; } else { list($md5, $sha256) = getHashes($fileName); } @@ -127,6 +163,7 @@ foreach ($dir as $fileInfo) { log(' sha256: ' . $sha256, 3); $imgSquare = imagecreatefrompng($squarePath); foreach ($sizes as $size) { + log(' size ' . $size, 3); $sizePathMd5 = $varDir . '/' . $size . '/' . $md5 . '.png'; $sizePathSha256 = $varDir . '/' . $size . '/' . $sha256 . '.png'; @@ -137,7 +174,7 @@ foreach ($dir as $fileInfo) { imagecolorallocatealpha($imgSize, 0, 0, 0, 127) ); imagecopyresampled( - $imgSize, $imgSquare, + $imgSize, $imgSquare, 0, 0, 0, 0, $size, $size, $maxSize, $maxSize ); @@ -145,11 +182,18 @@ foreach ($dir as $fileInfo) { imagepng($imgSize, $sizePathMd5); imagepng($imgSize, $sizePathSha256); imagedestroy($imgSize); - + } imagedestroy($imgSquare); } +/** + * Create and return md5 and sha256 hashes from a filename. + * + * @param string $fileName filename without path, e.g. "foo@example.org.png" + * + * @return array Array with 2 values: md5 and sha256 hash + */ function getHashes($fileName) { $fileNameNoExt = substr($fileName, 0, -strlen(strrpos($fileName, '.')) - 2); @@ -160,7 +204,17 @@ function getHashes($fileName) ); } - +/** + * Creates the square image from the given image in maximum size. + * Scales the image up or down and makes the non-covered parts transparent. + * + * @param string $origPath Full path to original image + * @param string $ext File extension ("jpg" or "png") + * @param string $targetPath Full path to target image file + * @param integer $maxSize Maxium image size the server supports + * + * @return boolean True if all went well, false if there was an error + */ function createSquare($origPath, $ext, $targetPath, $maxSize) { if ($ext == 'png') { @@ -196,7 +250,7 @@ function createSquare($origPath, $ext, $targetPath, $maxSize) $nHeight = (int)($oHeight * $flScale); imagecopyresampled( - $imgSquare, $imgOrig, + $imgSquare, $imgOrig, ($maxSize - $nWidth) / 2, ($maxSize - $nHeight) / 2, 0, 0, $nWidth, $nHeight, @@ -211,7 +265,15 @@ function createSquare($origPath, $ext, $targetPath, $maxSize) return true; } -function image_uptodate($sourcePath, $targetPath) +/** + * Check if the target file is newer than the source file. + * + * @param string $sourcePath Full source file path + * @param string $targetPath Full target file path + * + * @return boolean True if target file is newer than the source file + */ +function imageUptodate($sourcePath, $targetPath) { global $forceUpdate; if ($forceUpdate) { @@ -228,6 +290,14 @@ function image_uptodate($sourcePath, $targetPath) return true; } +/** + * Write a log message to stdout + * + * @param string $msg Message to write + * @param integer $level Log level - 1 is important, 3 is unimportant + * + * @return void + */ function log($msg, $level = 1) { global $logLevel; @@ -236,6 +306,13 @@ function log($msg, $level = 1) } } +/** + * Write an error message to stderr + * + * @param string $msg Message to write + * + * @return void + */ function logErr($msg) { file_put_contents('php://stderr', $msg . "\n");