Herzlichen Dank.
Es wäre aber schöner, wenn Du das Script in einer CODE-Box platzieren würdest, da der Link auf direktem Weg nicht erreichbar ist, und so Dein Script auch dauerhaft hier einsehbar wäre![]()
Dieses Script verändert die Größe eines Bildes. Die GET-Parameter sind alle erforderlich. 'w' steht für width und gibt die maximale Breite an, dasselbe gilt für 'h' (height), Höhe. 'file' gibt den Pfad zum Bild an.
Code:
Für Tipps und Änderungsvorschläge bin ich jederzeit offen.Code:<?php if(!empty($_GET['file']) && !empty($_GET['w']) && !empty($_GET['h'])) { if(preg_match("/.(jpg|jpeg)$/i", $_GET['file'], $regs)) $type = $regs[1]; if(preg_match("/.(png)$/i", $_GET['file'], $regs)) $type = $regs[1]; if(preg_match("/.(gif)$/i", $_GET['file'], $regs)) $type = $regs[1]; switch($type) { case "png": $function_image_create = "ImageCreateFromPng"; $function_image_new = "ImagePNG"; break; case "gif": $function_image_create = "ImageCreateFromGif"; $function_image_new = "ImageGIF"; break; default: $function_image_create = "ImageCreateFromJpeg"; $function_image_new = "ImageJpeg"; break; } header("Content-type: image/".$type); resizeImage($_GET['file'], $_GET['w'], $_GET['h']); } else { echo "Bitte alle Daten eingeben!"; } function resizeImage($file, $maxw, $maxh) { global $function_image_create; global $function_image_new; $imagesize = getimagesize($file); $imgw = $imagesize[0]; $imgh = $imagesize[1]; $ratiow = $maxw / $imgw; $ratioh = $maxh / $imgh; if($ratiow < $ratioh) { $newh = $imgh * $ratiow; $neww = $maxw; } elseif($ratioh < $ratiow) { $neww = $imgw * $ratioh; $newh = $maxh; } elseif($ratiow == $ratioh) { $neww = $maxw; $newh = $maxh; } $thumb = imagecreatetruecolor($neww, $newh); $source = $function_image_create($file); imagecopyresized($thumb, $source, 0, 0, 0, 0, $neww, $newh, $imgw, $imgh); return $function_image_new($thumb); } ?>![]()
Geändert von Jakob (02.06.2005 um 13:45 Uhr)
Herzlichen Dank.
Es wäre aber schöner, wenn Du das Script in einer CODE-Box platzieren würdest, da der Link auf direktem Weg nicht erreichbar ist, und so Dein Script auch dauerhaft hier einsehbar wäre![]()
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Schon erledigt.Und danke für den Hinweis.
Danke![]()
class GetProfileCustomerEntityReceiverInformationReceiverAndProgrammingInforma...{
public function __construct(){ if(!$this) die(' '); } }
http://www.thedailywtf.com/
Jetzt hab' ich ein Problem mit meinem eigenen Script.![]()
Die PNG Unterstützung ist aktiv aber ich bekomm' keine PNG-Bilder verkleinert.
Der Fehler liegt sicher im Script da die Grafikfunktionen einwandfrei mit PNG funktionieren.
Schreibfehler: $function_image_create = "ImageCreateFromPng";
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
(Ich hätt' das besser prüfen sollen
)
Danke.
Ich hab's oben schon geändert.
hi, erstmal: super Script!
und auf das Lob folgt gleich ne Frage
gibts ne Möglichkeit dass das ganze auch funktioniert wenn für $_GET['file'] statt nem relativem pfad ne url (zB: http://xyz.com/xyz.jpg) eingegeben wird?
im moment verhält sich das script wie gleich wie wenn man nen relativen pfad angibt der nicht existiert (er gibt den textlink aus)
pS: bevor Fragen nach dem Sinn auftauchen: der Sinn ist das die Bilder auf nem anderen Server geladen werden und es dort keine Möglichkeit gibt irgendwelche Scripte oder so auszuführen..
Wenn du das Script so nutzen willst, dauert es 3 Tage und der Server ist gehackt.
Wenn man aber mit diesem offenen Sicherheitsloch leben will, geht es schon.
Dazu muss der Server dann aber auch entsprechend konfiguriert sein:
http://www.dynamicwebpages.de/php/ref.filesystem.php (allow_url_fopen)
Aber dann doch lieber den nicht scriptfähigen Hosting-Vertrag updaten, kostet heute ja nun wirklich nichts mehr.
oh, ok hab gehofft man braucht nur ne leichte Befehlsänderung oder so...
danke für dich schnelle Antwort
-
hab vorhin mal paar Bilder damit getestet und mir ist aufgefallen das Bilder mit transparentem Hintergrund automatisch schwarz als Hintergrundfarbe bekommen
hab nun auch schon was gefunden um die Hintergrundfarbe beliebig zu ändern.. allerdings noch nichts um den Hintergrund wirklich transparent zu machen
weiß vllt von euch einer wie / ob das möglich ist?
schon mal im Voraus danke =)PHP-Code:<?php
if(!empty($_GET['file']) && !empty($_GET['w']) && !empty($_GET['h']))
{
if(preg_match("/.(jpg|jpeg)$/i", $_GET['file'], $regs)) $type = $regs[1];
if(preg_match("/.(png)$/i", $_GET['file'], $regs)) $type = $regs[1];
if(preg_match("/.(gif)$/i", $_GET['file'], $regs)) $type = $regs[1];
switch($type)
{
case "png":
$function_image_create = "ImageCreateFromPng";
$function_image_new = "ImagePNG";
break;
case "gif":
$function_image_create = "ImageCreateFromGif";
$function_image_new = "ImageGIF";
break;
default:
$function_image_create = "ImageCreateFromJpeg";
$function_image_new = "ImageJpeg";
break;
}
header("Content-type: image/".$type);
resizeImage($_GET['file'], $_GET['w'], $_GET['h']);
}
else
{
echo "Bitte alle Daten eingeben!";
}
function resizeImage($file, $maxw, $maxh) {
global $function_image_create;
global $function_image_new;
$imagesize = getimagesize($file);
$imgw = $imagesize[0];
$imgh = $imagesize[1];
$ratiow = $maxw / $imgw;
$ratioh = $maxh / $imgh;
if($ratiow < $ratioh)
{
$newh = $imgh * $ratiow;
$neww = $maxw;
}
elseif($ratioh < $ratiow)
{
$neww = $imgw * $ratioh;
$newh = $maxh;
}
elseif($ratiow == $ratioh)
{
$neww = $maxw;
$newh = $maxh;
}
$thumb = imagecreatetruecolor($neww, $newh);
$source = $function_image_create($file);
$bg = imagecolorallocate( $thumb, 255, 255, 255 );
imagefilledrectangle( $thumb, 0, 0, $neww, $newh, $bg );
imagecopyresized($thumb, $source, 0, 0, 0, 0, $neww, $newh, $imgw, $imgh);
return $function_image_new($thumb);
}
?>
Geändert von spy (27.11.2006 um 11:38 Uhr)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)