mirror of
https://github.com/Deutscher-Tischfussballbund/com_sportsmanager.git
synced 2026-06-10 06:27:52 +00:00
chore: outsource more image methods into own file
This commit is contained in:
@@ -1,6 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
function bildKopierenAngepasst($quelle, $ziel, $ziel_breite, $ziel_hoehe, $zuschneiden)
|
use JetBrains\PhpStorm\NoReturn;
|
||||||
|
use Joomla\CMS\Application\SiteApplication;
|
||||||
|
use Joomla\CMS\Factory;
|
||||||
|
use Joomla\Filesystem\File;
|
||||||
|
use Joomla\Filesystem\Folder;
|
||||||
|
|
||||||
|
function bildKopierenAngepasst($quelle, $ziel, $ziel_breite, $ziel_hoehe, $zuschneiden): bool
|
||||||
{
|
{
|
||||||
$len = strlen($ziel);
|
$len = strlen($ziel);
|
||||||
if ($len < 4 || $ziel[$len - 4] != ".")
|
if ($len < 4 || $ziel[$len - 4] != ".")
|
||||||
@@ -14,7 +20,7 @@ function bildKopierenAngepasst($quelle, $ziel, $ziel_breite, $ziel_hoehe, $zusch
|
|||||||
$quelle_breite = imagesx($quelle_image);
|
$quelle_breite = imagesx($quelle_image);
|
||||||
$quelle_hoehe = imagesy($quelle_image);
|
$quelle_hoehe = imagesy($quelle_image);
|
||||||
if ($quelle_breite == $ziel_breite && $quelle_hoehe == $ziel_hoehe)
|
if ($quelle_breite == $ziel_breite && $quelle_hoehe == $ziel_hoehe)
|
||||||
return JFile::copy($quelle, $ziel);
|
return File::copy($quelle, $ziel);
|
||||||
|
|
||||||
$ziel_image = imagecreatetruecolor($ziel_breite, $ziel_hoehe);
|
$ziel_image = imagecreatetruecolor($ziel_breite, $ziel_hoehe);
|
||||||
$hintergrund = $ext == "png" ? imagecolorallocatealpha($ziel_image, 0, 0, 0, 127) : imagecolorallocate($ziel_image, 64, 64, 64);
|
$hintergrund = $ext == "png" ? imagecolorallocatealpha($ziel_image, 0, 0, 0, 127) : imagecolorallocate($ziel_image, 64, 64, 64);
|
||||||
@@ -53,7 +59,426 @@ function bildKopierenAngepasst($quelle, $ziel, $ziel_breite, $ziel_hoehe, $zusch
|
|||||||
}
|
}
|
||||||
$output = ob_get_contents();
|
$output = ob_get_contents();
|
||||||
ob_end_clean();
|
ob_end_clean();
|
||||||
JFile::write($ziel, $output);
|
File::write($ziel, $output);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[NoReturn] function bildAnpassen($typ, $id = 0): void
|
||||||
|
{
|
||||||
|
global $sportsmanager_joomla_path;
|
||||||
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
||||||
|
|
||||||
|
if (empty($id))
|
||||||
|
$id = $jInput->get('id', 0, 'INT');
|
||||||
|
$fixed_width = $jInput->get('w', 0, 'INT');
|
||||||
|
$fixed_height = $jInput->get('h', 0, 'INT');
|
||||||
|
$max_width = $jInput->get('mw', 0, 'INT');
|
||||||
|
$max_height = $jInput->get('mh', 0, 'INT');
|
||||||
|
$no_cache = $jInput->get('nc', 0, 'INT');
|
||||||
|
|
||||||
|
$pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . $typ . DIRECTORY_SEPARATOR . $id . '.';
|
||||||
|
if (File::exists($pfad . 'png'))
|
||||||
|
$ext = "png";
|
||||||
|
else if (File::exists($pfad . 'jpg'))
|
||||||
|
$ext = "jpg";
|
||||||
|
else {
|
||||||
|
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
|
||||||
|
header('HTTP/1.1 404 Not Found');
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
$filemtime = filemtime($pfad . $ext);
|
||||||
|
$last_modified = gmdate('D, d M Y H:i:s', $filemtime) . " GMT";
|
||||||
|
$etag = md5($id . '.' . $ext . $filemtime);
|
||||||
|
|
||||||
|
// Prüfung, ob die im Browsercache vorhandene Datei der hiesigen entspricht
|
||||||
|
if ($_SERVER['HTTP_IF_NONE_MATCH'] == '"' . $etag . '"' || $last_modified == $_SERVER['HTTP_IF_MODIFIED_SINCE']) {
|
||||||
|
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
|
||||||
|
header('HTTP/1.1 304 Not Modified');
|
||||||
|
if ($no_cache)
|
||||||
|
header("Cache-Control: must-revalidate"); // Bewirkt, dass der Browser jedesmal die Datei neu prüft
|
||||||
|
else
|
||||||
|
header("Cache-Control: max-age=2592000"); // Bewirkt, dass nach dreißig Tagen die Datei vom Browser auf eine Aktualisierung geprüft wird.
|
||||||
|
header("Last-Modified: " . $last_modified);
|
||||||
|
header('ETag: "' . $etag . '"');
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
$image = $ext == "png" ? imagecreatefrompng($pfad . $ext) : imagecreatefromjpeg($pfad . $ext);
|
||||||
|
if ($image === false) {
|
||||||
|
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
|
||||||
|
header('HTTP/1.1 404 Not Found');
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
|
||||||
|
header("Content-type: image/" . ($ext == "png" ? "png" : "jpeg"));
|
||||||
|
if ($no_cache)
|
||||||
|
header("Cache-Control: must-revalidate"); // Bewirkt, dass der Browser jedesmal die Datei neu prüft
|
||||||
|
else
|
||||||
|
header("Cache-Control: max-age=2592000"); // Bewirkt, dass nach dreißig Tagen die Datei vom Browser auf eine Aktualisierung geprüft wird.
|
||||||
|
header("Last-Modified: " . $last_modified);
|
||||||
|
header('ETag: "' . $etag . '"');
|
||||||
|
|
||||||
|
$width = imagesx($image);
|
||||||
|
$height = imagesy($image);
|
||||||
|
|
||||||
|
if (($fixed_width == 0 || $width == $fixed_width) && ($fixed_height == 0 || $height == $fixed_height) && ($fixed_width != 0 || $max_width == 0 || $width <= $max_width) && ($fixed_height != 0 || $max_height == 0 || $height <= $max_height)) {
|
||||||
|
if ($ext == "png") {
|
||||||
|
imagesavealpha($image, true);
|
||||||
|
imagepng($image);
|
||||||
|
} else
|
||||||
|
imagejpeg($image);
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
$new_width = $width;
|
||||||
|
$new_height = $height;
|
||||||
|
|
||||||
|
if ($max_height > 0 && $new_height > $max_height) {
|
||||||
|
$new_width = max(round($new_width * $max_height / $new_height), 1);
|
||||||
|
$new_height = $max_height;
|
||||||
|
}
|
||||||
|
if ($max_width > 0 && $new_width > $max_width) {
|
||||||
|
$new_height = max(round($new_height * $max_width / $new_width), 1);
|
||||||
|
$new_width = $max_width;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($max_width > 0 && (($max_width - $new_width) % 2) == 1) // Toleranz bei nur 1 Pixel Unterschied
|
||||||
|
$new_width += 1;
|
||||||
|
if ($max_height > 0 && (($max_height - $new_height) % 2) == 1) // Toleranz bei nur 1 Pixel Unterschied
|
||||||
|
$new_height += 1;
|
||||||
|
|
||||||
|
$image_resized = imagecreatetruecolor(max($fixed_width, $new_width), max($fixed_height, $new_height));
|
||||||
|
$color = $ext == "png" ? imagecolorallocatealpha($image_resized, 0, 0, 0, 127) : imagecolorallocate($image_resized, 64, 64, 64);
|
||||||
|
imagefill($image_resized, 0, 0, $color);
|
||||||
|
imagecopyresampled($image_resized, $image, round((imagesx($image_resized) - $new_width) / 2), round((imagesy($image_resized) - $new_height) / 2), 0, 0, $new_width, $new_height, $width, $height);
|
||||||
|
if ($ext == "png") {
|
||||||
|
imagesavealpha($image_resized, true);
|
||||||
|
imagepng($image_resized);
|
||||||
|
} else
|
||||||
|
imagejpeg($image_resized);
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
function bildLoeschen($typ, $id): void
|
||||||
|
{
|
||||||
|
global $sportsmanager_joomla_path;
|
||||||
|
$typ_exploded = explode("/", $typ);
|
||||||
|
$typ = $typ_exploded[0];
|
||||||
|
$typ_prefix = count($typ_exploded) > 1 ? $typ_exploded[1] : "";
|
||||||
|
$bilder_pfad = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . $typ;
|
||||||
|
$pfad = $bilder_pfad . '/' . $typ_prefix . $id . ".";
|
||||||
|
if (!is_file($pfad . 'png') && !is_file($pfad . 'jpg'))
|
||||||
|
return;
|
||||||
|
$alte_bilder = Folder::files($bilder_pfad, '^' . $typ_prefix . $id . '\.|^' . $typ_prefix . 'I' . $id . 'T');
|
||||||
|
foreach ($alte_bilder as $fn)
|
||||||
|
File::delete($bilder_pfad . DIRECTORY_SEPARATOR . $fn);
|
||||||
|
}
|
||||||
|
|
||||||
|
function bildIdentisch($typ1, $id1, $typ2, $id2): bool
|
||||||
|
{
|
||||||
|
global $sportsmanager_joomla_path;
|
||||||
|
$typ1_exploded = explode("/", $typ1);
|
||||||
|
$typ1 = $typ1_exploded[0];
|
||||||
|
$typ1_prefix = count($typ1_exploded) > 1 ? $typ1_exploded[1] : "";
|
||||||
|
$bilder_pfad1 = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . $typ1;
|
||||||
|
$pfad1 = $bilder_pfad1 . '/' . $typ1_prefix . $id1 . ".";
|
||||||
|
if (is_file($pfad1 . "png"))
|
||||||
|
$ext = "png";
|
||||||
|
else if (is_file($pfad1 . "jpg"))
|
||||||
|
$ext = "jpg";
|
||||||
|
else
|
||||||
|
$ext = "";
|
||||||
|
$pfad1 .= $ext;
|
||||||
|
|
||||||
|
$typ2_exploded = explode("/", $typ2);
|
||||||
|
$typ2 = $typ2_exploded[0];
|
||||||
|
$typ2_prefix = count($typ2_exploded) > 1 ? $typ2_exploded[1] : "";
|
||||||
|
$bilder_pfad2 = $sportsmanager_joomla_path . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . 'sportsmanager' . DIRECTORY_SEPARATOR . $typ2;
|
||||||
|
$pfad2 = $bilder_pfad2 . '/' . $typ2_prefix . $id2 . "." . $ext;
|
||||||
|
|
||||||
|
return files_identical($pfad1, $pfad2);
|
||||||
|
}
|
||||||
|
|
||||||
|
function teamImage($teamId, $vereinId, $width = 240, $height = 240): ?string
|
||||||
|
{
|
||||||
|
$url = bildURL("mannschaften", $teamId, 0, 0, $width, $height);
|
||||||
|
|
||||||
|
if ($url == null) {
|
||||||
|
$url = bildURL("vereine", $vereinId, 0, 0, $width, $height);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $url;
|
||||||
|
}
|
||||||
|
|
||||||
|
function playerImage($playerId, $gender, $width = 180, $height = 240): ?string
|
||||||
|
{
|
||||||
|
$url = bildURL("spieler", $playerId, $width, $height, 0,0, $gender == 'M' ? 'm' : 'w');
|
||||||
|
if ($url == null) {
|
||||||
|
$url = bildURL("mannschaftsmitglieder", $playerId, $width, $height);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $url;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[NoReturn] function spielerbild(): void
|
||||||
|
{
|
||||||
|
$db = getDatabase();
|
||||||
|
$jInput = Factory::getContainer()->get(SiteApplication::class)->input;
|
||||||
|
|
||||||
|
$spielernr = $db->escape(trim($jInput->get('spielernr', '', 'RAW')));
|
||||||
|
$lizenznr = $db->escape(trim($jInput->get('lizenznr', '', 'RAW')));
|
||||||
|
|
||||||
|
if (empty($spielernr) && empty($lizenznr)) {
|
||||||
|
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
|
||||||
|
header('HTTP/1.1 404 Not Found');
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = "SELECT spieler_id"
|
||||||
|
. "\n FROM #__sportsmanager_spieler"
|
||||||
|
. "\n WHERE NOT ISNULL(aktueller_verein_id) AND NOT bild_ausblenden" . (!empty($spielernr) ? " AND spielernr = '$spielernr'" : " AND lizenznr = '$lizenznr'")
|
||||||
|
. "\n ORDER BY spieler_id DESC";
|
||||||
|
$db->setQuery($query);
|
||||||
|
if (!$db->execute()) {
|
||||||
|
die($db->stderr(true));
|
||||||
|
}
|
||||||
|
$rows = $db->loadObjectList();
|
||||||
|
if (count($rows) < 1) {
|
||||||
|
ob_end_clean(); // Wegen UTF-8-Zeichen, die in der ausgabe vorhanden sind
|
||||||
|
header('HTTP/1.1 404 Not Found');
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
$id = $rows[0]->spieler_id;
|
||||||
|
bildAnpassen("spieler", $id);
|
||||||
|
}
|
||||||
|
|
||||||
|
function bildURL($typ, $id, $fixed_width = 0, $fixed_height = 0, $max_width = 0, $max_height = 0, $alternativ = ""): ?string
|
||||||
|
{
|
||||||
|
global $sportsmanager_joomla_path;
|
||||||
|
global $sportsmanager_joomla_url;
|
||||||
|
|
||||||
|
$typ_exploded = explode("/", $typ);
|
||||||
|
$typ = $typ_exploded[0];
|
||||||
|
$typ_prefix = count($typ_exploded) > 1 ? $typ_exploded[1] : "";
|
||||||
|
|
||||||
|
$pfad = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . ".";
|
||||||
|
if (is_file($pfad . "png"))
|
||||||
|
$ext = "png";
|
||||||
|
else if (is_file($pfad . "jpg"))
|
||||||
|
$ext = "jpg";
|
||||||
|
else if (!empty($alternativ)) {
|
||||||
|
$id = $alternativ;
|
||||||
|
$pfad = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . ".";
|
||||||
|
if (is_file($pfad . "png"))
|
||||||
|
$ext = "png";
|
||||||
|
else if (is_file($pfad . "jpg"))
|
||||||
|
$ext = "jpg";
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
|
||||||
|
$time = filemtime($pfad . $ext);
|
||||||
|
|
||||||
|
if ($fixed_width > 0 && $fixed_height > 0) {
|
||||||
|
$pfad_angepasst = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . "I" . $id . "T" . $time . "W" . $fixed_width . "H" . $fixed_height . "." . $ext;
|
||||||
|
if (is_file($pfad_angepasst)) {
|
||||||
|
return $sportsmanager_joomla_url . 'images/sportsmanager/' . $typ . '/' . basename($pfad_angepasst);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$size = getimagesize($pfad . $ext);
|
||||||
|
$width = $size[0];
|
||||||
|
$height = $size[1];
|
||||||
|
|
||||||
|
$max_width = $fixed_width > 0 ? $fixed_width : $max_width;
|
||||||
|
$max_height = $fixed_height > 0 ? $fixed_height : $max_height;
|
||||||
|
|
||||||
|
if (($fixed_width == 0 || $width == $fixed_width) && ($fixed_height == 0 || $height == $fixed_height) && ($fixed_width != 0 || $max_width == 0 || $width <= $max_width) && ($fixed_height != 0 || $max_height == 0 || $height <= $max_height)) {
|
||||||
|
$pfad_angepasst = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . "I" . $id . "T" . $time . "W" . $width . "H" . $height . "." . $ext;
|
||||||
|
if (!is_file($pfad_angepasst)) {
|
||||||
|
if (!copy($pfad . $ext, $pfad_angepasst))
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $sportsmanager_joomla_url . 'images/sportsmanager/' . $typ . '/' . basename($pfad_angepasst);
|
||||||
|
}
|
||||||
|
|
||||||
|
$new_width = $width;
|
||||||
|
$new_height = $height;
|
||||||
|
|
||||||
|
if ($max_height > 0 && $new_height > $max_height) {
|
||||||
|
$new_width = max(round($new_width * $max_height / $new_height), 1);
|
||||||
|
$new_height = $max_height;
|
||||||
|
}
|
||||||
|
if ($max_width > 0 && $new_width > $max_width) {
|
||||||
|
$new_height = max(round($new_height * $max_width / $new_width), 1);
|
||||||
|
$new_width = $max_width;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($max_width > 0 && (($max_width - $new_width) % 2) == 1) // Toleranz bei nur 1 Pixel Unterschied
|
||||||
|
$new_width += 1;
|
||||||
|
if ($max_height > 0 && (($max_height - $new_height) % 2) == 1) // Toleranz bei nur 1 Pixel Unterschied
|
||||||
|
$new_height += 1;
|
||||||
|
|
||||||
|
$pfad_angepasst = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . "I" . $id . "T" . $time . "W" . max($fixed_width, $new_width) . "H" . max($fixed_height, $new_height) . "." . $ext;
|
||||||
|
|
||||||
|
if (!is_file($pfad_angepasst)) {
|
||||||
|
$image = $ext == "png" ? imagecreatefrompng($pfad . $ext) : imagecreatefromjpeg($pfad . $ext);
|
||||||
|
if ($image === false)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
$image_resized = imagecreatetruecolor(max($fixed_width, $new_width), max($fixed_height, $new_height));
|
||||||
|
$color = $ext == "png" ? imagecolorallocatealpha($image_resized, 0, 0, 0, 127) : imagecolorallocate($image_resized, 64, 64, 64);
|
||||||
|
imagefill($image_resized, 0, 0, $color);
|
||||||
|
imagecopyresampled($image_resized, $image, round((imagesx($image_resized) - $new_width) / 2), round((imagesy($image_resized) - $new_height) / 2), 0, 0, $new_width, $new_height, $width, $height);
|
||||||
|
if ($ext == "png") {
|
||||||
|
imagesavealpha($image_resized, true);
|
||||||
|
imagepng($image_resized, $pfad_angepasst);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
imagejpeg($image_resized, $pfad_angepasst);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $sportsmanager_joomla_url . 'images/sportsmanager/' . $typ . '/' . basename($pfad_angepasst);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* #resize=250
|
||||||
|
#resize=250,250,blue
|
||||||
|
#resize=250,250,blue
|
||||||
|
#resize=250,250&sizes=60%,80%,200%
|
||||||
|
#resize=250,250,cover&sizes=60%,80%,200%
|
||||||
|
#resize=250,250,fill&sizes=60%,80%,200%
|
||||||
|
#crop=250,250,center,top
|
||||||
|
#crop=250,250
|
||||||
|
#crop=250,250,center,bottom
|
||||||
|
#crop=250,250,left
|
||||||
|
#crop=250,250,right
|
||||||
|
*/
|
||||||
|
function yoothemeBild($typ, $id, $alternativ, $resize = '', $zusatz = ""): ?string
|
||||||
|
{
|
||||||
|
global $sportsmanager_joomla_path;
|
||||||
|
|
||||||
|
$typ_exploded = explode("/", $typ);
|
||||||
|
$typ = $typ_exploded[0];
|
||||||
|
$typ_prefix = count($typ_exploded) > 1 ? $typ_exploded[1] : "";
|
||||||
|
$pfad = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . ".";
|
||||||
|
|
||||||
|
if (is_file($pfad . "png"))
|
||||||
|
$ext = "png";
|
||||||
|
else if (is_file($pfad . "jpg"))
|
||||||
|
$ext = "jpg";
|
||||||
|
else if (!empty($alternativ)) {
|
||||||
|
$id = $alternativ;
|
||||||
|
$pfad = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . ".";
|
||||||
|
if (is_file($pfad . "png"))
|
||||||
|
$ext = "png";
|
||||||
|
else if (is_file($pfad . "jpg"))
|
||||||
|
$ext = "jpg";
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
|
||||||
|
$bildpfad = "images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . "." . $ext;
|
||||||
|
|
||||||
|
return '<img class="el-image" data-src="' . $bildpfad . $resize . '" ' . $zusatz . ' uk-img />';
|
||||||
|
}
|
||||||
|
|
||||||
|
function bildHTML($typ, $id, $fixed_width = 0, $fixed_height = 0, $max_width = 0, $max_height = 0, $zusatz = "", $alternativ = ""): ?string
|
||||||
|
{
|
||||||
|
global $sportsmanager_joomla_path;
|
||||||
|
global $sportsmanager_joomla_url;
|
||||||
|
|
||||||
|
$typ_exploded = explode("/", $typ);
|
||||||
|
$typ = $typ_exploded[0];
|
||||||
|
$typ_prefix = count($typ_exploded) > 1 ? $typ_exploded[1] : "";
|
||||||
|
|
||||||
|
$pfad = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . ".";
|
||||||
|
if (is_file($pfad . "png"))
|
||||||
|
$ext = "png";
|
||||||
|
else if (is_file($pfad . "jpg"))
|
||||||
|
$ext = "jpg";
|
||||||
|
else if (!empty($alternativ)) {
|
||||||
|
$id = $alternativ;
|
||||||
|
$pfad = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . $id . ".";
|
||||||
|
if (is_file($pfad . "png"))
|
||||||
|
$ext = "png";
|
||||||
|
else if (is_file($pfad . "jpg"))
|
||||||
|
$ext = "jpg";
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
|
||||||
|
$time = filemtime($pfad . $ext);
|
||||||
|
|
||||||
|
if ($fixed_width > 0 && $fixed_height > 0) {
|
||||||
|
$pfad_angepasst = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . "I" . $id . "T" . $time . "W" . $fixed_width . "H" . $fixed_height . "." . $ext;
|
||||||
|
if (is_file($pfad_angepasst)) {
|
||||||
|
return '<img src="' . $sportsmanager_joomla_url . 'images/sportsmanager/' . $typ . '/' . basename($pfad_angepasst) . '" width="' . $fixed_width . '" height="' . $fixed_height . '" ' . $zusatz . ' />';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$size = getimagesize($pfad . $ext);
|
||||||
|
$width = $size[0];
|
||||||
|
$height = $size[1];
|
||||||
|
|
||||||
|
$max_width = $fixed_width > 0 ? $fixed_width : $max_width;
|
||||||
|
$max_height = $fixed_height > 0 ? $fixed_height : $max_height;
|
||||||
|
|
||||||
|
if (($fixed_width == 0 || $width == $fixed_width) && ($fixed_height == 0 || $height == $fixed_height) && ($fixed_width != 0 || $max_width == 0 || $width <= $max_width) && ($fixed_height != 0 || $max_height == 0 || $height <= $max_height)) {
|
||||||
|
$pfad_angepasst = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . "I" . $id . "T" . $time . "W" . $width . "H" . $height . "." . $ext;
|
||||||
|
if (!is_file($pfad_angepasst)) {
|
||||||
|
if (!copy($pfad . $ext, $pfad_angepasst))
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return '<img src="' . $sportsmanager_joomla_url . 'images/sportsmanager/' . $typ . '/' . basename($pfad_angepasst) . '" width="' . $width . '" height="' . $height . '" ' . $zusatz . ' />';
|
||||||
|
}
|
||||||
|
|
||||||
|
$new_width = $width;
|
||||||
|
$new_height = $height;
|
||||||
|
|
||||||
|
if ($max_height > 0 && $new_height > $max_height) {
|
||||||
|
$new_width = max(round($new_width * $max_height / $new_height), 1);
|
||||||
|
$new_height = $max_height;
|
||||||
|
}
|
||||||
|
if ($max_width > 0 && $new_width > $max_width) {
|
||||||
|
$new_height = max(round($new_height * $max_width / $new_width), 1);
|
||||||
|
$new_width = $max_width;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($max_width > 0 && (($max_width - $new_width) % 2) == 1) // Toleranz bei nur 1 Pixel Unterschied
|
||||||
|
$new_width += 1;
|
||||||
|
if ($max_height > 0 && (($max_height - $new_height) % 2) == 1) // Toleranz bei nur 1 Pixel Unterschied
|
||||||
|
$new_height += 1;
|
||||||
|
|
||||||
|
$pfad_angepasst = $sportsmanager_joomla_path . "/images/sportsmanager/" . $typ . "/" . $typ_prefix . "I" . $id . "T" . $time . "W" . max($fixed_width, $new_width) . "H" . max($fixed_height, $new_height) . "." . $ext;
|
||||||
|
|
||||||
|
if (!is_file($pfad_angepasst)) {
|
||||||
|
$image = $ext == "png" ? imagecreatefrompng($pfad . $ext) : imagecreatefromjpeg($pfad . $ext);
|
||||||
|
if ($image === false)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
$image_resized = imagecreatetruecolor(max($fixed_width, $new_width), max($fixed_height, $new_height));
|
||||||
|
$color = $ext == "png" ? imagecolorallocatealpha($image_resized, 0, 0, 0, 127) : imagecolorallocate($image_resized, 64, 64, 64);
|
||||||
|
imagefill($image_resized, 0, 0, $color);
|
||||||
|
imagecopyresampled($image_resized, $image, round((imagesx($image_resized) - $new_width) / 2), round((imagesy($image_resized) - $new_height) / 2), 0, 0, $new_width, $new_height, $width, $height);
|
||||||
|
if ($ext == "png") {
|
||||||
|
imagesavealpha($image_resized, true);
|
||||||
|
imagepng($image_resized, $pfad_angepasst);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
imagejpeg($image_resized, $pfad_angepasst);
|
||||||
|
}
|
||||||
|
|
||||||
|
return '<img src="' . $sportsmanager_joomla_url . 'images/sportsmanager/' . $typ . '/' . basename($pfad_angepasst) . '" width="' . max($fixed_width, $new_width) . '" height="' . max($fixed_height, $new_height) . '" ' . $zusatz . ' />';
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user