// Keys in the image permalink urls, e.g. http://www.archive.org/download/itemid/page/cover_{keyval}_{keyval}.jpg
public static $imageUrlKeys = array(
- 'r' => 'reduce',
+ //'r' => 'reduce',
's' => 'scale',
'region' => 'region',
'tile' => 'tile',
'w' => 'width',
- 'h' => 'height'
+ 'h' => 'height',
+ 'rotate' => 'rotate'
);
-
// Paths to command-line tools
var $exiftool = '/petabox/sw/books/exiftool/exiftool';
var $kduExpand = '/petabox/sw/bin/kdu_expand';
'ext' => 'jpg',
);
- if ($pageInfo['reduce']) {
- $requestEnv['reduce'] = $pageInfo['reduce'];
- }
- // $$$ handle scale, other sizes, rotation, etc
+ // remove non-passthrough keys from pageInfo
+ unset($pageInfo['type']);
+ unset($pageInfo['value']);
+
+ // add pageinfo to request
+ $requestEnv = array_merge($pageInfo, $requestEnv);
// Return image data - will check privs
$this->serveRequest($requestEnv);
// The pbmreduce reduction factor produces an image with dimension 1/n
// The kakadu reduction factor produceds an image with dimension 1/(2^n)
+
+ // Set scale from height or width if set
if (isset($requestEnv['height'])) {
$powReduce = $this->nearestPow2Reduce($requestEnv['height'], $imageInfo['height']);
$scale = pow(2, $powReduce);
} else {
// $$$ could be cleaner
// Provide next smaller power of two reduction
+
+ // Set scale from 'scale' if set
$scale = $requestEnv['scale'];
if (!$scale) {
$scale = 1;
}
- if (array_key_exists($scale, $this->imageSizes)) {
+
+ // Set scale from named size (e.g. 'large') if set
+ $size = $requestEnv['size'];
+ if ( $size && array_key_exists($size, self::$imageSizes)) {
$srcRatio = floatval($imageInfo['width']) / floatval($imageInfo['height']);
if ($srcRatio > 1) {
// wide
} else {
$dimension = 'height';
}
- $powReduce = $this->nearestPow2Reduce($this->imageSizes[$scale], $imageInfo[$dimension]);
+ $powReduce = $this->nearestPow2Reduce(self::$imageSizes[$size], $imageInfo[$dimension]);
} else {
- $powReduce = $this->nearestPow2ForScale($scale);
+ // No named size - update powReduce from scale
+ $powReduce = $this->nearestPow2ForScale($sale);
}
+
+ // Make sure scale matches powReduce
$scale = pow(2, $powReduce);
}
// Look for other known parts
foreach ($parts as $part) {
- if ( in_array($part, $imageSizes) ) {
+ if ( array_key_exists($part, self::$imageSizes) ) {
$pageInfo['size'] = $part;
continue;
}