- Add videodb PHP/MySQL media collection manager (Blu-ray, DVD, CD) - Dockerfile: PHP 8.1 + Apache with GD/mysqli/exif extensions - docker-compose.yml: app on port 6761 + MySQL 8.0 with health checks - docker-entrypoint.sh: auto-generates config.inc.php from env vars, waits for MySQL, initializes DB schema idempotently - init-db.php: CLI schema installer using app's own prefix_query() logic - Persistent volumes for DB, cache, and cover images Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
86 lines
4.3 KiB
PHP
86 lines
4.3 KiB
PHP
<?php
|
|
//////////////////////////////////////////////////////////////
|
|
// phpThumb() by James Heinrich <info@silisoftware.com> //
|
|
// available at http://phpthumb.sourceforge.net //
|
|
// and/or https://github.com/JamesHeinrich/phpThumb //
|
|
//////////////////////////////////////////////////////////////
|
|
/// //
|
|
// phpThumb.demo.object.php //
|
|
// James Heinrich <info@silisoftware.com> //
|
|
// //
|
|
// Example of how to use phpthumb.class.php as an object //
|
|
// //
|
|
//////////////////////////////////////////////////////////////
|
|
|
|
// Note: phpThumb.php is where the caching code is located, if
|
|
// you instantiate your own phpThumb() object that code is
|
|
// bypassed and it's up to you to handle the reading and
|
|
// writing of cached files, if appropriate.
|
|
|
|
die('For security reasons, this demo is disabled by default. Please comment out line '.__LINE__.' in '.basename(__FILE__));
|
|
|
|
require_once '../phpthumb.class.php';
|
|
|
|
// create phpThumb object
|
|
$phpThumb = new phpThumb();
|
|
|
|
// create 3 sizes of thumbnail
|
|
$thumbnail_widths = array(160, 320, 640);
|
|
$capture_raw_data = false; // set to true to insert to database rather than render to screen or file (see below)
|
|
foreach ($thumbnail_widths as $thumbnail_width) {
|
|
// this is very important when using a single object to process multiple images
|
|
$phpThumb->resetObject();
|
|
|
|
// set data source -- do this first, any settings must be made AFTER this call
|
|
$phpThumb->setSourceFilename('images/loco.jpg'); // for static demo only
|
|
//$phpThumb->setSourceFilename($_FILES['userfile']['tmp_name']);
|
|
// or $phpThumb->setSourceData($binary_image_data);
|
|
// or $phpThumb->setSourceImageResource($gd_image_resource);
|
|
|
|
// PLEASE NOTE:
|
|
// You must set any relevant config settings here. The phpThumb
|
|
// object mode does NOT pull any settings from phpThumb.config.php
|
|
//$phpThumb->setParameter('config_document_root', '/home/groups/p/ph/phpthumb/htdocs/');
|
|
//$phpThumb->setParameter('config_cache_directory', '/tmp/persistent/phpthumb/cache/');
|
|
|
|
// set parameters (see "URL Parameters" in phpthumb.readme.txt)
|
|
$phpThumb->setParameter('w', $thumbnail_width);
|
|
//$phpThumb->setParameter('h', 100);
|
|
//$phpThumb->setParameter('fltr', 'gam|1.2');
|
|
//$phpThumb->setParameter('fltr', 'wmi|../watermark.jpg|C|75|20|20');
|
|
|
|
// set options (see phpThumb.config.php)
|
|
// here you must preface each option with "config_"
|
|
$phpThumb->setParameter('config_output_format', 'jpeg');
|
|
$phpThumb->setParameter('config_imagemagick_path', '/usr/local/bin/convert');
|
|
//$phpThumb->setParameter('config_allow_src_above_docroot', true); // needed if you're working outside DOCUMENT_ROOT, in a temp dir for example
|
|
|
|
// generate & output thumbnail
|
|
$output_filename = './thumbnails/'.basename($_FILES['userfile']['name']).'_'.$thumbnail_width.'.'.$phpThumb->config_output_format;
|
|
if ($phpThumb->GenerateThumbnail()) { // this line is VERY important, do not remove it!
|
|
$output_size_x = imagesx($phpThumb->gdimg_output);
|
|
$output_size_y = imagesy($phpThumb->gdimg_output);
|
|
if ($output_filename || $capture_raw_data) {
|
|
if ($capture_raw_data && $phpThumb->RenderOutput()) {
|
|
// RenderOutput renders the thumbnail data to $phpThumb->outputImageData, not to a file or the browser
|
|
$mysqli->query("INSERT INTO `table` (`thumbnail`) VALUES ('".mysqli_real_escape_string($phpThumb->outputImageData)."') WHERE (`id` = '".mysqli_real_escape_string($id)."')");
|
|
} elseif ($phpThumb->RenderToFile($output_filename)) {
|
|
// do something on success
|
|
echo 'Successfully rendered:<br><img src="'.$output_filename.'">';
|
|
} else {
|
|
// do something with debug/error messages
|
|
echo 'Failed (size='.$thumbnail_width.'):<pre>'.implode("\n\n", $phpThumb->debugmessages).'</pre>';
|
|
}
|
|
$phpThumb->purgeTempFiles();
|
|
} else {
|
|
$phpThumb->OutputThumbnail();
|
|
}
|
|
} else {
|
|
// do something with debug/error messages
|
|
echo 'Failed (size='.$thumbnail_width.').<br>';
|
|
echo '<div style="background-color:#FFEEDD; font-weight: bold; padding: 10px;">'.$phpThumb->fatalerror.'</div>';
|
|
echo '<form><textarea rows="10" cols="60" wrap="off">'.htmlentities(implode("\n* ", $phpThumb->debugmessages)).'</textarea></form><hr>';
|
|
}
|
|
|
|
}
|