From: Alan Jack Pippin Date: Mon, 15 Oct 2007 05:59:42 +0000 (-0600) Subject: Finishing touches on initial support for watermarking video thumbnails X-Git-Tag: 1_1_1~17 X-Git-Url: http://git.pippins.net/embedvideo/%27%20.%20%24this-%3Ephpgw_js_url%20.%20%27/jscalendar/static/%7Bedit%7D?a=commitdiff_plain;h=b65625759caa70c8905f63b87a36e59951ed24fd;p=embedvideo%2F.git Finishing touches on initial support for watermarking video thumbnails --- diff --git a/ItemAddEmbedVideo.inc b/ItemAddEmbedVideo.inc index 3a1fa79..03a54e9 100644 --- a/ItemAddEmbedVideo.inc +++ b/ItemAddEmbedVideo.inc @@ -70,6 +70,7 @@ class ItemAddEmbedVideo extends ItemAddPlugin { global $debugOutput, $useInternalFlvPlayer, $youtubeDevId; global $width, $height, $externalFlvPlayer, $externalFlvPlayerVars; global $flvThumbnail, $useRemoteSize, $autoStart; + global $watermarkVideos, $watermarkImage; /* Find out what value our parameters should have by looking to see if they * are defined in our overrides section or default section. If they are not @@ -86,6 +87,8 @@ class ItemAddEmbedVideo extends ItemAddPlugin { $flvThumbnail = $this->getParameter($ItemAddEmbedVideo, 'flvThumbnail', ""); $useRemoteSize = $this->getParameter($ItemAddEmbedVideo, 'useRemoteSize', "false"); $autoStart = $this->getParameter($ItemAddEmbedVideo, 'autoStart', "false"); + $watermarkImage = $this->getParameter($ItemAddEmbedVideo, 'watermarkImage', ""); + $watermarkVideos = $this->getParameter($ItemAddEmbedVideo, 'watermarkVideos', "false"); /* Print our stored/set Parameters */ if(!strcmp($debugOutput,"true")) { @@ -102,6 +105,8 @@ class ItemAddEmbedVideo extends ItemAddPlugin { print "flvThumbnail=$flvThumbnail
"; print "useRemoteSize=$useRemoteSize
"; print "autoStart=$autoStart
"; + print "watermarkVideos=$watermarkVideos
"; + print "watermarkImage=$watermarkImage
"; print "
"; } @@ -132,7 +137,8 @@ class ItemAddEmbedVideo extends ItemAddPlugin { /* Gallery2 specific paths and variables */ $urlGenerator =& $gallery->getUrlGenerator(); $gallery2_url = $urlGenerator->getCurrentUrlDir(); - $gallery2_flv_thumbnail = "modules/thumbnail/images/G2video.jpg"; + $gallery2_flv_thumbnail = "modules/embedvideo/images/G2video_thumbnail.jpg"; + $gallery2_video_watermark = "modules/embedvideo/images/G2video_watermark1.png"; $gallery2_flv_player = "modules/flashvideo/lib/G2flv.swf"; /* Store the passed URL in a shorter local variable */ @@ -643,6 +649,121 @@ class ItemAddEmbedVideo extends ItemAddPlugin { print "$debugString"; print "
"; } + + /* Watermark the video thumbnail image if indicated by our parameter */ + if(!strcmp($watermarkVideos,"true")) { + + /* + * If no watermarkImage parameter is set, set it to a default value. + */ + if(preg_match("/\w+/", $watermarkImage)) { + $watermarkImage = $watermarkImage; + } else { + $watermarkImage = $gallery2_url.$gallery2_video_watermark; + } + + /* Get the watermark Image Extension */ + preg_match('/\.(...)$/', $watermarkImage, $matches); + $watermarkExt=$matches[1]; + + /* + * Check to make sure the URL to the watermark image file is valid + * (That the file exists at the URL given) + */ + list ($successfullyCopied, $response, $headers) = + $this->fetchWebFileHeaders($watermarkImage, $extraHeaders); + if (!$successfullyCopied) { + return array(GalleryCoreApi::error(ERROR_BAD_PATH,__FILE__,__LINE__, + "Unable to find the watermark image at url: $watermarkImage - $response"),NULL,NULL); + } + + /* Download the watermark image to a local file */ + $tmpDir = $gallery->getConfig('data.gallery.tmp'); + $watermark = $platform->tempnam($tmpDir, 'wmk_img_'); + $watermark.= "." . $watermarkExt; + list ($successfullyCopied, $response, $headers) = + GalleryCoreApi::fetchWebFile($watermarkImage, $watermark, $extraHeaders); + if (!$successfullyCopied) { + return array(GalleryCoreApi::error(ERROR_STORAGE_FAILURE,__FILE__,__LINE__, + "Unable to copy watermark image from url: $watermarkImage - $response"),null,null); + } + + /* See if there is a toolkit installed that can perform a composite operation */ + list ($ret, $toolkit) = GalleryCoreApi::getToolkitByOperation($mimeType, 'composite'); + if ($ret) { + return array($ret->wrap(__FILE__, __LINE__, + "Unable to locate a toolkit module to perform the 'composite' watermark operation"), null); + } + + /* Make sure we can access the toolkit found */ + if (!isset($toolkit)) { + return array(GalleryStatus::error(ERROR_PERMISSION_DENIED, __FILE__, __LINE__, + "Unable to access the toolkit module to perform the 'composite' watermark operation"), null); + } + + /* Get the image dimensions of the thumbnail */ + $image_data = @getimagesize($newTmpFile); + if(!$image_data) { + return array(GalleryCoreApi::error(ERROR_STORAGE_FAILURE,__FILE__,__LINE__, + "Unable to retrieve thumbnail dimensions for: $tmpFile"),null,null); + } + $thumbnailWidth = $image_data[0]; + $thumbnailHeight = $image_data[1]; + + /* Get the image dimensions of the watermark */ + $image_data = @getimagesize($watermark); + if(!$image_data) { + return array(GalleryCoreApi::error(ERROR_STORAGE_FAILURE,__FILE__,__LINE__, + "Unable to retrieve watermark dimensions for: $tmpFile"),null,null); + } + $watermarkWidth = $image_data[0]; + $watermarkHeight = $image_data[1]; + + /* Obtain the mimeType of the watermark */ + list ($ret, $watermarkMimeType) = GalleryCoreApi::getMimeType($watermark); + + /* Remove the gallery base path from the watermark image path */ + /* This has to be done to satisfy the argument requirement for the toolkit operation */ + $dataDir = $gallery->getConfig('data.gallery.base'); + $dataDir=preg_replace("/\//","\\/",$dataDir); + preg_match("/$dataDir(.*)/", $watermark, $matches); + $watermark = $matches[1]; + + /* General debug output */ + if(!strcmp($debugOutput,"true")) { + print "

Watermark Operation

"; + print "watermarkImage: $watermarkImage
"; + print "watermarkTmpImage: $watermark
"; + print "watermarkMimeType: $watermarkMimeType
"; + print "watermarkWidth: $watermarkWidth
"; + print "watermarkHeight: $watermarkHeight
"; + print "watermarkedWidth: $thumbnailWidth
"; + print "watermarkedHeight: $thumbnailHeight
"; + } + + /* Apply the watermark image to the thumbnail */ + $tmpFile = $platform->tempnam($tmpDir, 'wmk_'); + list ($ret, $mimeType) = $toolkit->performOperation( + $mimeType, 'composite', $newTmpFile, $tmpFile, + array($watermark, $watermarkMimeType, + $watermarkWidth, $watermarkHeight, + 'bottom-left', 0, 0)); + + /* Check the return code of the composite operation */ + if ($ret) { + return array($ret->wrap(__FILE__, __LINE__, + "Unable to apply watermark to the video thumbnail image"), null); + } + + if(!strcmp($debugOutput,"true")) { + print "watermarked Image: $tmpFile
"; + print "
"; + } + + /* Update the path of our thumbnail to point to the new watermarked thumbnail instead */ + $newTmpFile = $tmpFile; + + } /* Make the gallery2 call to add this item to the album */ list ($ret, $newItem) = GalleryCoreApi::addItemToAlbum($newTmpFile, diff --git a/images/G2video_watermark.gif b/images/G2video_watermark.gif deleted file mode 100755 index 8ec7a76..0000000 Binary files a/images/G2video_watermark.gif and /dev/null differ diff --git a/images/G2video_watermark1.png b/images/G2video_watermark1.png new file mode 100644 index 0000000..0a6038a Binary files /dev/null and b/images/G2video_watermark1.png differ diff --git a/images/G2video_watermark2.gif b/images/G2video_watermark2.gif new file mode 100755 index 0000000..8ec7a76 Binary files /dev/null and b/images/G2video_watermark2.gif differ diff --git a/module.inc b/module.inc index 0cc2e4b..8b051ab 100644 --- a/module.inc +++ b/module.inc @@ -33,7 +33,7 @@ class EmbedVideoModule extends GalleryModule { $this->setId('embedvideo'); $this->setName($gallery->i18n('Embed Video')); $this->setDescription($gallery->i18n('Add embedded videos from the web')); - $this->setVersion('1.0.5'); + $this->setVersion('1.0.6'); $this->setGroup('import', $gallery->i18n('Import')); $this->setCallbacks('getSiteAdminViews'); $this->setRequiredCoreApi(array(7, 4)); @@ -77,7 +77,13 @@ class EmbedVideoModule extends GalleryModule { if (!isset($params['embedvideodefaultVariables'])) { $ret = $this->setParameter('embedvideodefaultVariables', - 'height=240|width=320|useInternalFlvPlayer=true|useRemoteSize=false|youtubeShowRelated=false'); + 'height=240'. + '|width=320'. + '|useInternalFlvPlayer=true'. + '|useRemoteSize=false'. + '|youtubeShowRelated=false'. + '|watermarkVideos=true' + ); if ($ret) { return $ret; } diff --git a/templates/EmbedVideoSiteAdmin.tpl b/templates/EmbedVideoSiteAdmin.tpl index 8d5f2e9..f86a633 100644 --- a/templates/EmbedVideoSiteAdmin.tpl +++ b/templates/EmbedVideoSiteAdmin.tpl @@ -145,6 +145,13 @@ flvThumbnailURL path {g->text text="URL path to a jpg to use as a thumbnail for all directly linked/embedded flv files."} + watermarkVideostrue/false + {g->text text="specify whether you want to apply a watermark to the video thumbnails when they are added."} + + watermarkImageURL path + {g->text text="URL path to an image to use as a watermark for all video thumbnails."} + +