webApp/php/thumbnail.php
2024-09-20 00:36:03 +02:00

81 lines
1.8 KiB
PHP

<?php
#error_reporting(E_ALL);
#ini_set('display_errors', TRUE);
#ini_set('display_startup_errors', TRUE);
ini_set('display_errors', FALSE);
ini_set('display_startup_errors', FALSE);
include 'fonction.php';
require 'vendor/autoload.php';
$root = $_SERVER["DOCUMENT_ROOT"];
$directory = "/uploads/";
if(isset($_GET["file"])) {
$file = $root.urldecode($_GET["file"]);
$size = isset($_GET["size"]) ? $_GET["size"] : 100;
if(file_exists($file)) {
switch (font_type($file)) {
case 'file-image':
echo getThumbnail($file, $size);
break;
case 'file-video':
$thumb = createThumbnail($file, 10);
echo getThumbnail($thumb, $size);
break;
case 'file-pdf':
// code...
break;
default:
echo "Not image";
break;
}
exit();
}
else {
header("HTTP/1.1 400 File not Found");
echo $file." not Found";
exit();
}
}
function createThumbnail(string $file, int $sec)
{
$thumbnail = '/tmp/thumbnail.png';
$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open($file);
$frame = $video->frame(FFMpeg\Coordinate\TimeCode::fromSeconds($sec));
$frame->save($thumbnail);
return($thumbnail);
}
function getThumbnail(string $file, int $size)
{
list($width, $height) = getimagesize($file);
// Create an Imagick object
$imagick = new Imagick($file);
// Function to set the background color
$imagick->setbackgroundcolor('rgb(0, 0, 0)');
// Use thumbnailImage function
$imagick->thumbnailImage($width*$size/$height, $size, true, true);
header("Content-Type: image/jpg");
// Display the output image
echo $imagick->getImageBlob();
}
?>