示例#1
0
文件: asset.php 项目: DBezemer/server
 public function linkFromAsset(asset $fromAsset)
 {
     $this->setWidth($fromAsset->getWidth());
     $this->setHeight($fromAsset->getHeight());
     $this->setContainerFormat($fromAsset->getContainerFormat());
     $this->setSize($fromAsset->getSize());
     $this->setFileExt($fromAsset->getFileExt());
     $this->setTags($fromAsset->getTags());
     $this->setDescription($fromAsset->getDescription());
     $this->incrementVersion();
     $this->setStatusLocalReady();
 }
 private static function generateThumbnail(asset $srcAsset, thumbParamsOutput $destThumbParamsOutput, &$errDescription, $rotate = null)
 {
     $srcSyncKey = $srcAsset->getSyncKey(flavorAsset::FILE_SYNC_FLAVOR_ASSET_SUB_TYPE_ASSET);
     list($fileSync, $local) = kFileSyncUtils::getReadyFileSyncForKey($srcSyncKey, true, false);
     if (!$fileSync || $fileSync->getFileType() == FileSync::FILE_SYNC_FILE_TYPE_URL) {
         $errDescription = 'Source asset could has no valid file sync';
         return false;
     }
     $srcPath = $fileSync->getFullPath();
     $srcWamsAssetId = $fileSync->getWamsAssetId();
     $uniqid = uniqid('thumb_');
     $destPath = kConf::get('temp_folder') . "/thumb/{$uniqid}.jpg";
     $logPath = $destPath . '.log';
     if (is_null($srcWamsAssetId)) {
         if (!file_exists($srcPath)) {
             $errDescription = "Source file [{$srcPath}] does not exist";
             return false;
         }
         if (!is_file($srcPath)) {
             $errDescription = "Source file [{$srcPath}] is not a file";
             return false;
         }
     }
     try {
         if ($srcAsset->getType() == assetType::FLAVOR) {
             /* @var $srcAsset flavorAsset */
             $dar = null;
             $mediaInfo = mediaInfoPeer::retrieveByFlavorAssetId($srcAsset->getId());
             if ($mediaInfo) {
                 $dar = $mediaInfo->getVideoDar();
             }
             // generates the thumbnail
             if (!is_null($srcWamsAssetId)) {
                 $thumbMaker = new KWAMSThumbnailMaker($srcWamsAssetId, $destPath);
                 $created = $thumbMaker->createThumbnail($destThumbParamsOutput->getVideoOffset(), $srcAsset->getWidth(), $srcAsset->getHeight(), $dar);
             } else {
                 $thumbMaker = new KFFMpegThumbnailMaker($srcPath, $destPath, kConf::get('bin_path_ffmpeg'));
                 $created = $thumbMaker->createThumnail($destThumbParamsOutput->getVideoOffset(), $srcAsset->getWidth(), $srcAsset->getHeight(), null, null, $dar);
             }
             if (!$created || !file_exists($destPath)) {
                 $errDescription = "Thumbnail not captured";
                 return false;
             }
             $srcPath = $destPath;
             $uniqid = uniqid('thumb_');
             $destPath = kConf::get('temp_folder') . "/thumb/{$uniqid}.jpg";
         }
         $quality = $destThumbParamsOutput->getQuality();
         $cropType = $destThumbParamsOutput->getCropType();
         $cropX = $destThumbParamsOutput->getCropX();
         $cropY = $destThumbParamsOutput->getCropY();
         $cropWidth = $destThumbParamsOutput->getCropWidth();
         $cropHeight = $destThumbParamsOutput->getCropHeight();
         $bgcolor = $destThumbParamsOutput->getBackgroundColor();
         $width = $destThumbParamsOutput->getWidth();
         $height = $destThumbParamsOutput->getHeight();
         $scaleWidth = $destThumbParamsOutput->getScaleWidth();
         $scaleHeight = $destThumbParamsOutput->getScaleHeight();
         $density = $destThumbParamsOutput->getDensity();
         $stripProfiles = $destThumbParamsOutput->getStripProfiles();
         $cropper = new KImageMagickCropper($srcPath, $destPath, kConf::get('bin_path_imagemagick'), true);
         $cropped = $cropper->crop($quality, $cropType, $width, $height, $cropX, $cropY, $cropWidth, $cropHeight, $scaleWidth, $scaleHeight, $bgcolor, $density, $rotate, $stripProfiles);
         if (!$cropped || !file_exists($destPath)) {
             $errDescription = "Crop failed";
             return false;
         }
         return $destPath;
     } catch (Exception $ex) {
         $errDescription = $ex->getMessage();
         return false;
     }
 }
 public function setFlavorAsset(DOMElement $item, asset $flavorAsset, $flavorAssetRemoteUrl, $lang)
 {
     $this->setNodeValue('media:content/@url', $flavorAssetRemoteUrl, $item);
     $this->setNodeValue('media:content/@width', $flavorAsset->getWidth(), $item);
     $this->setNodeValue('media:content/@height', $flavorAsset->getHeight(), $item);
     $this->setNodeValue('media:content/@type', $this->getContentType($flavorAssetRemoteUrl), $item);
     if ($lang) {
         $this->setNodeValue('media:content/@lang', $lang, $item);
     }
 }