From 8f2c8ce7f9453142248fb06e0377a7f60bfd301c Mon Sep 17 00:00:00 2001 From: Lorenzo Giacomelli Date: Fri, 15 Jan 2016 18:27:42 +0100 Subject: [PATCH] GetImage da testare meglio e gestisce anche le gif --- private/lib/dao/mediaModels/MediaModel.php | 2 +- .../lib/media/mediaRenderers/MediaYoutube.php | 8 +- private/lib/system/SystemController.php | 4 +- public/getImage.php | 81 ++++++++++-------- public/index.php | 83 ++++++++++--------- 5 files changed, 98 insertions(+), 80 deletions(-) diff --git a/private/lib/dao/mediaModels/MediaModel.php b/private/lib/dao/mediaModels/MediaModel.php index 00db583..6e10358 100644 --- a/private/lib/dao/mediaModels/MediaModel.php +++ b/private/lib/dao/mediaModels/MediaModel.php @@ -57,7 +57,7 @@ class MediaModel extends Model implements MediaInterface{ } public function renderMedia(){ - var_dump($this->mediaRenderer); +// var_dump($this->mediaRenderer); $this->mediaRenderer->render(); } diff --git a/private/lib/media/mediaRenderers/MediaYoutube.php b/private/lib/media/mediaRenderers/MediaYoutube.php index c9bb181..3812f19 100644 --- a/private/lib/media/mediaRenderers/MediaYoutube.php +++ b/private/lib/media/mediaRenderers/MediaYoutube.php @@ -1,14 +1,14 @@ modelRef = $model; + public function __construct($link){ + $this->link = $link; } public function asText(){ - return $this->modelRef->link; + return $this->link; } public function render(){ diff --git a/private/lib/system/SystemController.php b/private/lib/system/SystemController.php index 9e1b46f..cd794f6 100644 --- a/private/lib/system/SystemController.php +++ b/private/lib/system/SystemController.php @@ -24,8 +24,8 @@ class SystemController { } } self::logMessage(LoggingFacility::$LEVEL_ERROR,"log.sysctl.cantexecute",$myCmd." 2>&1",true); - $catParameters=array($myCmd,$return->messages[sizeof($return->messages)-1],$return); - throw new SystemException("exc.sysctl.cantexecute",$catParameters); +// $catParameters=array($myCmd,$return->messages[sizeof($return->messages)-1],$return); + throw new SystemException("Error while executing command '".$myCmd."'. Last message '".$return->messages[sizeof($return->messages)-1]."'"); } self::logMessage(LoggingFacility::$LEVEL_INFO,"log.sysctl.correctlyexecute",$myCmd." 2>&1",true); diff --git a/public/getImage.php b/public/getImage.php index 3e70df4..3484009 100644 --- a/public/getImage.php +++ b/public/getImage.php @@ -6,54 +6,63 @@ Creation Date: 14/gen/2016 require_once(dirname(__FILE__)."/load.php"); +$sizes = array( + "large"=>array("width"=>800,"height"=>600), + "small"=>array("width"=>160,"height"=>120) +); + if (array_key_exists("id",$_GET)) { if (array_key_exists('size',$_GET)){ $size=$_GET['size']; } else { - $size = "small"; + $size = "original"; } - + if (!array_key_exists($size, $sizes) || strcmp("original", $size)==0){ + $size = null; + } + $img = GlobalVariables::get("dao")->getFirst("MediaModel",array("id"=>$_GET['id'])); - + if (!is_null($img)){ $basepath = GlobalVariables::get("config")->paths->media; + $toMime = $basepath."/".$img->id.".".$img->extension; $thumb = new Imagick($basepath."/".$img->id.".".$img->extension); - if ($size == "small"){ - $thumb->thumbnailimage(0, 100); + $geom = $thumb->getimagegeometry(); + + if($img->extension != "gif"){ + if (!is_null($size)){ + if ($geom["width"]>=$geom["height"]){ + $thumb->scaleimage($sizes[$size]["width"], 0,false); + } + else { + $thumb->scaleimage(0, $sizes[$size]["height"],false); + } + } + + header('Content-type: '.mime_content_type($toMime)); + echo $thumb; } - - header('Content-type: image/png'); - echo $thumb; - - //GIF LINKS -// http://stackoverflow.com/questions/20361458/php-imagick-gif-animation-is-not-preserved -// http://stackoverflow.com/questions/718491/resize-animated-gif-file-without-destroying-animation -// http://php.net/manual/en/imagick.readimageblob.php - - -// switch ($size){ -// case "big": -// $img = ThumbnailGenerator::renderBigThumbnail($content); -// break; -// case "med": -// $img = ThumbnailGenerator::renderMediumThumbnail($content); -// break; -// case "small": -// $img = ThumbnailGenerator::renderSmallThumbnail($content); -// break; -// case "mini": -// $img = ThumbnailGenerator::renderMiniThumbnail($content); -// break; -// case "topbar": -// header("Cache-Control: no-cache, must-revalidate"); -// $img = ThumbnailGenerator::renderThumbnail($content,150,0); -// break; -// default: -// $img = ThumbnailGenerator::renderOriginal($content); -// break; -// } + else{ + + $thumb = $thumb->coalesceimages(); + if (!is_null($size)){ + foreach ($thumb as $frame){ + if ($geom["width"]>=$geom["height"]){ + $thumb->scaleimage($sizes[$size]["width"], 0,false); + } + else { + $thumb->scaleimage(0, $sizes[$size]["height"],false); + } + } + } + $thumb = $thumb->deconstructimages(); + + header('Content-type: '.mime_content_type($toMime)); + echo $thumb->getimagesblob(); + } + } } ?> \ No newline at end of file diff --git a/public/index.php b/public/index.php index 356d69f..d90660d 100644 --- a/public/index.php +++ b/public/index.php @@ -8,55 +8,65 @@ require_once(dirname(__FILE__)."/load.php"); try { - $prova = new stdClass(); - $prova->mediaType = MediaModel::TYPE_YOUTUBE; - $prova->link = "www.pene.com"; - $media = new MediaModel($prova); - $media2= new MediaModel($prova); -// $media->renderMedia(); + $media = GlobalVariables::get("dao")->getFirst("MediaModel",array("id"=>"569914c30b860ea20d8b4568")); - $news = new NotiziaModel(); + +// $saveable = new stdClass(); +// $saveable->mediaType = MediaModel::TYPE_IMAGE; +// $media = DaoMediaHandler::createNewFileBasedMedia($saveable, "/home/lorenzo/Scrivania/giphy.gif"); + + $media->renderMedia(); + +// $prova = new stdClass(); +// $prova->mediaType = MediaModel::TYPE_YOUTUBE; +// $prova->link = "www.pene.com"; +// $media = new MediaModel($prova); + +// $media2= new MediaModel($prova); +// // $media->renderMedia(); + +// $news = new NotiziaModel(); - GlobalVariables::get("dao")->save($news); - GlobalVariables::get("dao")->save($media); +// GlobalVariables::get("dao")->save($news); +// GlobalVariables::get("dao")->save($media); - GlobalVariables::get("dao")->save($media2); +// GlobalVariables::get("dao")->save($media2); - DaoMediaHandler::addMedia($news, $media); +// DaoMediaHandler::addMedia($news, $media); - DaoMediaHandler::addMedia($news, $media2); +// DaoMediaHandler::addMedia($news, $media2); +// // var_dump($news); + +// // echo "

"; +// // var_dump($media); +// // echo "

"; + +// $medias = DaoMediaHandler::getMedias($news); + +// // echo "medias "; PHP_EOL.var_dump($medias).PHP_EOL; +// DaoMediaHandler::setMainMediaToModel($news, $media); + +// echo "

"; // var_dump($news); - -// echo "

"; -// var_dump($media); -// echo "

"; - - $medias = DaoMediaHandler::getMedias($news); - -// echo "medias "; PHP_EOL.var_dump($medias).PHP_EOL; - DaoMediaHandler::setMainMediaToModel($news, $media); - - echo "

"; - var_dump($news); - echo "

"; - - - $mainmedia = DaoMediaHandler::getMainMediaFromModel($news); // echo "

"; -// var_dump($mainmedia); -// echo "

"; - DaoMediaHandler::deleteMedia($news,$media); - echo "

"; - var_dump($news); +// $mainmedia = DaoMediaHandler::getMainMediaFromModel($news); +// // echo "

"; - DaoMediaHandler::deleteMedia($news,$media2); - echo "

"; - var_dump($news); +// // var_dump($mainmedia); +// // echo "

"; + +// DaoMediaHandler::deleteMedia($news,$media); +// echo "

"; +// var_dump($news); + +// DaoMediaHandler::deleteMedia($news,$media2); +// echo "

"; +// var_dump($news); // var_dump($media->id); @@ -99,5 +109,4 @@ try { catch (Exception $ex){ echo $ex->getMessage(); } - ?> \ No newline at end of file