Example #1
0
 /**
  * @covers MemePuush\Image::output
  * @covers MemePuush\Image::getOutputFilename
  */
 public function testOutputFilename()
 {
     $imagick = $this->getMock('Imagick', array('getImageGeometry', 'getImageSignature', 'setImageFormat', 'setCompression', 'setCompressionQuality', 'writeImage', 'queryFontMetrics', 'annotateImage'), array());
     $imagick->expects($this->any())->method('getImageGeometry')->will($this->returnValue(array('width' => 283, 'height' => 445)));
     $this->object->setImage($imagick);
     $draw = $this->getMock('ImagickDraw', array('setFont', 'setFontSize', 'setFontWeight', 'setStrokeColor', 'setStrokeWidth', 'setStrokeAntialias', 'setStrokeAlpha', 'setFillAlpha', 'setTextAntialias', 'setTextAlignment', 'setTextKerning', 'setGravity', 'setFillColor', 'rectangle'), array());
     $this->object->setTopCaption('something');
     $this->object->getTopCaption()->setDraw($draw);
     $this->object->getTopCaption()->setGravity(2);
     $this->object->setBottomCaption('');
     $this->object->getBottomCaption()->setDraw($draw);
     $this->object->getBottomCaption()->setGravity(2);
     $this->assertEquals('0da702af.jpg', $this->object->getOutputFilename());
 }
Example #2
0
 //top caption to write on the image
 $t1 = isset($_GET['topCaption']) ? $_GET['topCaption'] : '';
 //bottom caption to write on the image
 $t2 = isset($_GET['bottomCaption']) ? $_GET['bottomCaption'] : '';
 //source image to overlay
 $img = isset($_GET['img']) ? $_GET['img'] : '';
 if ($output == 'puush' && !$apiKey) {
     throw new \Exception('Puu.sh api key must be provided');
 }
 if (!$t1 && !$t2) {
     throw new \Exception('No caption provided');
 }
 if (!$img) {
     throw new \Exception('No image url provided');
 }
 $image = new Image($img);
 //if the image doesn't exist, cannot continue
 //if( !$image )
 //    throw new \Exception( 'Could not load image: ' . $img );
 $image->setOutputFormat($output, $apiKey);
 $image->setTopCaption($t1);
 $image->setBottomCaption($t2);
 $outputContent = $image->output();
 switch ($output) {
     case 'screen':
         header('Content-type: image/jpg');
         echo file_get_contents($outputContent);
         break;
     case 'file':
         echo $outputContent;
         break;
Example #3
0
 /**
  * @covers MemePuush\Caption::annotateImage
  */
 public function testAnnotateImageDebug()
 {
     $image = new Image();
     $imagick = $this->getMock('Imagick', array('getImageGeometry', 'queryFontMetrics', 'annotateImage', 'drawImage'), array());
     $imagick->expects($this->any())->method('getImageGeometry')->will($this->returnValue(array('width' => 283, 'height' => 445)));
     $properties = array('{"characterWidth":1,"characterHeight":1,"ascender":2,"descender":-1,"textWidth":68,"textHeight":1,"maxHorizontalAdvance":1,"boundingBox":{"x1":0,"y1":-0.015625,"x2":0.8125,"y2":0.8125},"originX":68.265625,"originY":0}', '{"characterWidth":4,"characterHeight":4,"ascender":5,"descender":-1,"textWidth":141.03125,"textHeight":5,"maxHorizontalAdvance":5,"boundingBox":{"x1":-0.03125,"y1":-0.0625,"x2":3.265625,"y2":3.234375},"originX":140.265625,"originY":0}', '{"characterWidth":6,"characterHeight":6,"ascender":7,"descender":-2,"textWidth":191.03125,"textHeight":7,"maxHorizontalAdvance":8,"boundingBox":{"x1":-0.03125,"y1":-0.09375,"x2":4.890625,"y2":4.84375},"originX":190.265625,"originY":0}', '{"characterWidth":8,"characterHeight":8,"ascender":9,"descender":-2,"textWidth":238.046875,"textHeight":10,"maxHorizontalAdvance":10,"boundingBox":{"x1":-0.046875,"y1":-0.140625,"x2":6.515625,"y2":6.453125},"originX":237.265625,"originY":0}', '{"characterWidth":9,"characterHeight":9,"ascender":10,"descender":-2,"textWidth":287,"textHeight":11,"maxHorizontalAdvance":12,"boundingBox":{"x1":0,"y1":0,"x2":6,"y2":7},"originX":287.265625,"originY":0}', '{"characterWidth":10,"characterHeight":10,"ascender":11,"descender":-3,"textWidth":301,"textHeight":12,"maxHorizontalAdvance":13,"boundingBox":{"x1":0,"y1":0,"x2":7,"y2":8},"originX":301.265625,"originY":0}', '{"characterWidth":11,"characterHeight":11,"ascender":12,"descender":-3,"textWidth":147,"textHeight":45,"maxHorizontalAdvance":14,"boundingBox":{"x1":-1,"y1":0,"x2":8,"y2":9},"originX":146.765625,"originY":0}', '{"characterWidth":13,"characterHeight":13,"ascender":14,"descender":-3,"textWidth":170,"textHeight":51,"maxHorizontalAdvance":17,"boundingBox":{"x1":0,"y1":0,"x2":10,"y2":10},"originX":170.765625,"originY":0}', '{"characterWidth":15,"characterHeight":15,"ascender":16,"descender":-4,"textWidth":192.5,"textHeight":60,"maxHorizontalAdvance":19,"boundingBox":{"x1":-0.5,"y1":0,"x2":11,"y2":12},"originX":192.765625,"originY":0}', '{"characterWidth":17,"characterHeight":17,"ascender":18,"descender":-4,"textWidth":216,"textHeight":66,"maxHorizontalAdvance":22,"boundingBox":{"x1":0,"y1":0,"x2":13,"y2":13},"originX":216.765625,"originY":0}', '{"characterWidth":18,"characterHeight":18,"ascender":19,"descender":-4,"textWidth":228,"textHeight":69,"maxHorizontalAdvance":23,"boundingBox":{"x1":0,"y1":0,"x2":14,"y2":14},"originX":228.765625,"originY":0}', '{"characterWidth":19,"characterHeight":19,"ascender":20,"descender":-5,"textWidth":239.5,"textHeight":75,"maxHorizontalAdvance":24,"boundingBox":{"x1":-0.5,"y1":0,"x2":14,"y2":15},"originX":239.765625,"originY":0}', '{"characterWidth":20,"characterHeight":20,"ascender":21,"descender":-5,"textWidth":256.5,"textHeight":78,"maxHorizontalAdvance":26,"boundingBox":{"x1":-0.5,"y1":0,"x2":15,"y2":16},"originX":256.765625,"originY":0}', '{"characterWidth":21,"characterHeight":21,"ascender":22,"descender":-5,"textWidth":267,"textHeight":81,"maxHorizontalAdvance":27,"boundingBox":{"x1":0,"y1":0,"x2":15,"y2":17},"originX":267.765625,"originY":0}', '{"characterWidth":22,"characterHeight":22,"ascender":23,"descender":-5,"textWidth":274.5,"textHeight":84,"maxHorizontalAdvance":28,"boundingBox":{"x1":-0.5,"y1":0,"x2":17,"y2":17},"originX":274.765625,"originY":0}', '{"characterWidth":23,"characterHeight":23,"ascender":24,"descender":-5,"textWidth":294.5,"textHeight":87,"maxHorizontalAdvance":30,"boundingBox":{"x1":-0.5,"y1":0,"x2":17,"y2":18},"originX":294.765625,"originY":0}');
     foreach ($properties as $i => $returnVal) {
         $imagick->expects($this->at($i + 1))->method('queryFontMetrics')->will($this->returnValue(json_decode($returnVal, true)));
     }
     $image->setImage($imagick);
     $object = new Caption($image, 'it\'s a long description with lots of words and word wrapping');
     $object->setDebug(true);
     $draw = $this->getMock('ImagickDraw', array('setFont', 'setFontSize', 'setFontWeight', 'setStrokeColor', 'setStrokeWidth', 'setStrokeAntialias', 'setStrokeAlpha', 'setFillAlpha', 'setTextAntialias', 'setTextAlignment', 'setTextKerning', 'setGravity', 'setFillColor', 'rectangle'), array());
     $object->setDraw($draw);
     $pixel = $this->getMock('ImagickPixel');
     $object->setPixel($pixel);
     $object->setGravity(2);
     $object->annotateImage();
     $this->assertEquals(21, $object->getFontSize());
 }