67 lines
1.6 KiB
PHP
67 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Zotlabs\Thumbs;
|
|
|
|
|
|
class Video {
|
|
|
|
function MatchDefault($type) {
|
|
return(($type === 'video') ? true : false );
|
|
}
|
|
|
|
function Thumb($attach,$preview_style,$height = 300, $width = 300) {
|
|
|
|
$photo = false;
|
|
|
|
$t = explode('/',$attach['filetype']);
|
|
if($t[1])
|
|
$extension = '.' . $t[1];
|
|
else
|
|
return;
|
|
|
|
|
|
$file = dbunescbin($attach['content']);
|
|
$tmpfile = $file . $extension;
|
|
$outfile = $file . '.jpg';
|
|
|
|
$istream = fopen($file,'rb');
|
|
$ostream = fopen($tmpfile,'wb');
|
|
if($istream && $ostream) {
|
|
pipe_streams($istream,$ostream);
|
|
fclose($istream);
|
|
fclose($ostream);
|
|
}
|
|
|
|
/*
|
|
* Note: imagick convert may try to call 'ffmpeg' (or other conversion utilities) under
|
|
* the covers for this particular operation. If this is not installed or not in the path
|
|
* for the web server user, errors may be reported in the web server logs.
|
|
*/
|
|
|
|
|
|
$ffmpeg = trim(shell_exec('which ffmpeg'));
|
|
if($ffmpeg) {
|
|
logger('ffmpeg not found in path. Video thumbnails may fail.');
|
|
}
|
|
|
|
$imagick_path = get_config('system','imagick_convert_path');
|
|
if($imagick_path && @file_exists($imagick_path)) {
|
|
$cmd = $imagick_path . ' ' . escapeshellarg(PROJECT_BASE . '/' . $tmpfile . '[0]') . ' -thumbnail ' . $width . 'x' . $height . ' ' . escapeshellarg(PROJECT_BASE . '/' . $outfile);
|
|
// logger('imagick thumbnail command: ' . $cmd);
|
|
|
|
/** @scrutinizer ignore-unhandled */
|
|
@exec($cmd);
|
|
|
|
if(! file_exists($outfile)) {
|
|
logger('imagick scale failed.');
|
|
}
|
|
else {
|
|
@rename($outfile,$file . '.thumb');
|
|
}
|
|
}
|
|
|
|
@unlink($tmpfile);
|
|
}
|
|
}
|
|
|