/** * Interface for resize implementations * * @param string $imageData Image Data * @param integer $height Height value * @param integer $width Width value * @param integer $type Type * * @return string Resized image data */ public function resize($imageData, $height, $width, $type = ElcodiMediaImageResizeTypes::FORCE_MEASURES) { $originalResource = imagecreatefromstring($imageData); $originalWidth = imagesx($originalResource); $originalHeight = imagesy($originalResource); $dimensions = Dimensions::create($originalWidth, $originalHeight, $width, $height, $type); $newResource = imagecreatetruecolor($dimensions->getDstFrameX(), $dimensions->getDstFrameY()); $backgroundColor = imagecolorallocate($newResource, 255, 255, 255); imagefill($newResource, 0, 0, $backgroundColor); imagecopyresampled($newResource, $originalResource, $dimensions->getDstX(), $dimensions->getDstY(), $dimensions->getSrcX(), $dimensions->getSrcY(), $dimensions->getDstWidth(), $dimensions->getDstHeight(), $dimensions->getSrcWidth(), $dimensions->getSrcHeight()); ob_start(); imagejpeg($newResource); $content = ob_get_contents(); ob_end_clean(); return $content; }
/** * Test dimensions. * * working with an image with dimensions 400x400 */ public function testDimensionsOutboundsCrop() { $dimensions = Dimensions::create(450, 450, 300, 150, ElcodiMediaImageResizeTypes::OUTBOUND_CROP); $this->assertEquals(0, $dimensions->getSrcX()); $this->assertEquals(112.5, $dimensions->getSrcY()); $this->assertEquals(450, $dimensions->getSrcWidth()); $this->assertEquals(225, $dimensions->getSrcHeight()); $this->assertEquals(0, $dimensions->getDstX()); $this->assertEquals(0, $dimensions->getDstY()); $this->assertEquals(300, $dimensions->getDstWidth()); $this->assertEquals(150, $dimensions->getDstHeight()); $this->assertEquals(300, $dimensions->getDstFrameX()); $this->assertEquals(150, $dimensions->getDstFrameY()); }