public function render(Request $request, Response $response, array $args) { $item = new Item($args['id']); $size = isset($args['size']) ? $args['size'] : 'o'; $version = isset($args['version']) ? $args['version'] : null; $cacheFile = $item->getCachePath($size, $version); $fileResponse = new BinaryFileResponse($cacheFile); $fileResponse->headers->set('Content-Type', 'image/png'); $fileResponse->setFile($cacheFile); $fileResponse->setContentDisposition(ResponseHeaderBag::DISPOSITION_INLINE, $item->getTitle() . '.png'); return $fileResponse; }
/** * @testdox Image thumbnails are correctly resized. * @test */ public function correctSizedThumbnails() { // Create a large image. $img = Image::canvas(1000, 400, '#ccc'); $tmpFilename = $this->dataDir() . '/test-image.jpg'; $img->save($tmpFilename); // Add it to an Item. $item = new Item(null, $this->testUser); $item->save(null, null, $tmpFilename); // Check that the various sizes returned are correct. $this->assertEquals('image/jpeg', $item->getMimeType()); $this->assertFileEquals($tmpFilename, $item->getCachePath('o')); // Load the 'display' size. $display = Image::make($item->getCachePath('d')); $this->assertEquals(700, $display->getWidth()); $this->assertEquals(280, $display->getHeight()); // The thumbnail is always 200 x 200. $thumb = Image::make($item->getCachePath('t')); $this->assertEquals(200, $thumb->getWidth()); $this->assertEquals(200, $thumb->getHeight()); }