summaryrefslogtreecommitdiff
path: root/modules/gallery/helpers/graphics.php
diff options
context:
space:
mode:
authorNathan Kinkade <nath@nkinka.de>2013-01-16 17:32:36 +0000
committerNathan Kinkade <nath@nkinka.de>2013-01-16 17:32:36 +0000
commit0047af90bf4db08b22838e6ded22a7fa70cee98a (patch)
tree1c6cb658ffac9ae5d00e32668bed1b1bfbf70b5a /modules/gallery/helpers/graphics.php
parent77e2e58aeff49477242f789b367def4b08836a47 (diff)
parent9d684b7b83f0aa026e9d6f06228294f179a3bcaa (diff)
Manually resolved conflict after recent pull.
Diffstat (limited to 'modules/gallery/helpers/graphics.php')
-rw-r--r--modules/gallery/helpers/graphics.php54
1 files changed, 34 insertions, 20 deletions
diff --git a/modules/gallery/helpers/graphics.php b/modules/gallery/helpers/graphics.php
index c19fbe6d..e7c5da68 100644
--- a/modules/gallery/helpers/graphics.php
+++ b/modules/gallery/helpers/graphics.php
@@ -155,13 +155,27 @@ class graphics_Core {
try {
foreach ($ops as $target => $output_file) {
if ($input_item->is_movie()) {
- // Convert the movie to a JPG first
+ // Convert the movie filename to a JPG first, delete anything that might already be there
$output_file = legal_file::change_extension($output_file, "jpg");
- try {
- movie::extract_frame($input_file, $output_file);
- } catch (Exception $e) {
- // Assuming this is MISSING_FFMPEG for now
- copy(MODPATH . "gallery/images/missing_movie.jpg", $output_file);
+ unlink($output_file);
+ // Run movie_extract_frame events, which can either:
+ // - generate an output file, bypassing the ffmpeg-based movie::extract_frame
+ // - add to the options sent to movie::extract_frame (e.g. change frame extract time,
+ // add de-interlacing arguments to ffmpeg... see movie helper for more info)
+ // Note that the args are similar to those of the events in gallery_graphics
+ $movie_options_wrapper = new stdClass();
+ $movie_options_wrapper->movie_options = array();
+ module::event("movie_extract_frame", $input_file, $output_file,
+ $movie_options_wrapper, $input_item);
+ // If no output_file generated by events, run movie::extract_frame with movie_options
+ clearstatcache();
+ if (@filesize($output_file) == 0) {
+ try {
+ movie::extract_frame($input_file, $output_file, $movie_options_wrapper->movie_options);
+ } catch (Exception $e) {
+ // Didn't work, likely because of MISSING_FFMPEG - copy missing_movie instead
+ copy(MODPATH . "gallery/images/missing_movie.jpg", $output_file);
+ }
}
$working_file = $output_file;
} else {
@@ -201,7 +215,7 @@ class graphics_Core {
// Something went wrong rebuilding the image. Leave it dirty and move on.
// @todo we should handle this better.
Kohana_Log::add("error", "Caught exception rebuilding image: {$item->title}\n" .
- $e->getMessage() . "\n" . $e->getTraceAsString());
+ $e->getMessage() . "\n" . $e->getTraceAsString());
throw $e;
}
}
@@ -260,13 +274,13 @@ class graphics_Core {
$count = graphics::find_dirty_images_query()->count_records();
if ($count) {
site_status::warning(
- t2("One of your photos is out of date. <a %attrs>Click here to fix it</a>",
- "%count of your photos are out of date. <a %attrs>Click here to fix them</a>",
- $count,
- array("attrs" => html::mark_clean(sprintf(
- 'href="%s" class="g-dialog-link"',
- url::site("admin/maintenance/start/gallery_task::rebuild_dirty_images?csrf=__CSRF__"))))),
- "graphics_dirty");
+ t2("One of your photos is out of date. <a %attrs>Click here to fix it</a>",
+ "%count of your photos are out of date. <a %attrs>Click here to fix them</a>",
+ $count,
+ array("attrs" => html::mark_clean(sprintf(
+ 'href="%s" class="g-dialog-link"',
+ url::site("admin/maintenance/start/gallery_task::rebuild_dirty_images?csrf=__CSRF__"))))),
+ "graphics_dirty");
}
}
@@ -320,12 +334,12 @@ class graphics_Core {
} else {
// ImageMagick & GraphicsMagick
$magick_kits = array(
- "imagemagick" => array(
- "name" => "ImageMagick", "binary" => "convert", "version_arg" => "-v",
- "version_regex" => "/Version: \S+ (\S+)/"),
- "graphicsmagick" => array(
- "name" => "GraphicsMagick", "binary" => "gm", "version_arg" => "version",
- "version_regex" => "/\S+ (\S+)/"));
+ "imagemagick" => array(
+ "name" => "ImageMagick", "binary" => "convert", "version_arg" => "-version",
+ "version_regex" => "/Version: \S+ (\S+)/"),
+ "graphicsmagick" => array(
+ "name" => "GraphicsMagick", "binary" => "gm", "version_arg" => "version",
+ "version_regex" => "/\S+ (\S+)/"));
// Loop through the kits
foreach ($magick_kits as $index => $settings) {
$path = system::find_binary(