Example #1
0
 /**
  * @covers MediaAlchemyst\Specification\Image::setStrip
  * @covers MediaAlchemyst\Specification\Image::getStrip
  */
 public function testSetStrip()
 {
     $this->object->setStrip(true);
     $this->assertEquals(true, $this->object->getStrip());
     $this->object->setStrip(false);
     $this->assertEquals(false, $this->object->getStrip());
 }
Example #2
0
 public function uploadIconAction(Request $request, $id)
 {
     $datas = ['success' => false, 'message' => ''];
     $feed = $this->getFeedRepository()->find($id);
     if (null === $feed) {
         $this->app->abort(404, "Feed not found");
     }
     if (!$feed->isOwner($this->getAuthenticatedUser())) {
         $this->app->abort(403, "Access Forbidden");
     }
     try {
         if (!$request->files->get('files')) {
             throw new BadRequestHttpException('Missing file parameter');
         }
         if (count($request->files->get('files')) > 1) {
             throw new BadRequestHttpException('Upload is limited to 1 file per request');
         }
         $file = current($request->files->get('files'));
         if (!$file->isValid()) {
             throw new BadRequestHttpException('Uploaded file is invalid');
         }
         $media = $this->app->getMediaFromUri($file->getPathname());
         if ($media->getType() !== MediaInterface::TYPE_IMAGE) {
             throw new BadRequestHttpException('Bad filetype');
         }
         $spec = new Image();
         $spec->setResizeMode(Image::RESIZE_MODE_OUTBOUND);
         $spec->setDimensions(32, 32);
         $spec->setStrip(true);
         $spec->setQuality(72);
         $tmpname = tempnam(sys_get_temp_dir(), 'feed_icon') . '.png';
         try {
             /** @var Alchemyst $alchemyst */
             $alchemyst = $this->app['media-alchemyst'];
             $alchemyst->turnInto($media->getFile()->getPathname(), $tmpname, $spec);
         } catch (\MediaAlchemyst\Exception\ExceptionInterface $e) {
             throw new \Exception_InternalServerError('Error while resizing');
         }
         unset($media);
         $feed->setIconUrl(true);
         $manager = $this->getObjectManager();
         $manager->persist($feed);
         $manager->flush();
         /** @var Filesystem $filesystem */
         $filesystem = $this->app['filesystem'];
         $rootPath = $this->app['root.path'];
         $filesystem->copy($tmpname, $rootPath . '/config/feed_' . $feed->getId() . '.jpg');
         $filesystem->copy($tmpname, sprintf('%s/www/custom/feed_%d.jpg', $rootPath, $feed->getId()));
         $filesystem->remove($tmpname);
         $datas['success'] = true;
     } catch (\Exception $e) {
         $datas['message'] = $this->app->trans('Unable to add file to Phraseanet');
     }
     return $this->app->json($datas);
 }
Example #3
0
 private function specificationsFromJob(ImageJob $job)
 {
     $specifications = new Image();
     $parameters = $this->populateParameters($job->getParameters(), array('width' => null, 'height' => null, 'quality' => null, 'resize-mode' => null, 'resolution' => null, 'resolution-units' => null, 'resolution-x' => null, 'resolution-y' => null, 'rotation' => null, 'strip' => null));
     if ($parameters['width'] && $parameters['height']) {
         $specifications->setDimensions($parameters['width'], $parameters['height']);
     }
     if ($parameters['quality']) {
         $specifications->setQuality($parameters['quality']);
     }
     if ($parameters['resize-mode']) {
         switch ($parameters['resize-mode']) {
             case ImageJob::RESIZE_OUTBOUND:
                 $mode = Image::RESIZE_MODE_OUTBOUND;
                 break;
             case ImageJob::RESIZE_INBOUND:
                 $mode = Image::RESIZE_MODE_INBOUND;
                 break;
             default:
             case ImageJob::RESIZE_INBOUND_FIXEDRATIO:
                 $mode = Image::RESIZE_MODE_INBOUND_FIXEDRATIO;
                 break;
         }
         $specifications->setResizeMode($mode);
     }
     if ($parameters['resolution'] || $parameters['resolution-x'] && $parameters['resolution-y']) {
         $units = Image::RESOLUTION_PIXELPERINCH;
         if ($parameters['resolution-units'] === ImageJob::RESOLUTION_PER_CENTIMETERS) {
             $units = Image::RESOLUTION_PIXELPERCENTIMETER;
         }
         if ($parameters['resolution']) {
             $res_x = $res_y = $parameters['resolution'];
         } else {
             $res_x = $parameters['resolution-x'];
             $res_y = $parameters['resolution-y'];
         }
         $specifications->setResolution($res_x, $res_y, $units);
     }
     if ($parameters['rotation']) {
         $specifications->setRotationAngle($parameters['rotation']);
     }
     if ($parameters['strip']) {
         $specifications->setStrip($parameters['strip']);
     }
     return $specifications;
 }