CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
13.04.2009, 21:16:21
|
Anfänger
|
|
Registriert seit: Feb 2006
Alter: 35
Beiträge: 96
|
|
Transparente Bilder bekommen schwarzen Hintergrund
Das ist meine Klasse "bild", mit der ich Bilder bei Bedarf vergrößern bzw. verkleinern kann. Sie funktioniert soweit auch. Allerdings kommt es immer zu Probleme, wennes um transparente Bilder geht. Diese bekommen dann immer einen schwarzen Hintergrund. Was kann ich da machen?
PHP-Code:
class bild
{
var $name;
var $ordner;
function bild($in_bild, $in_ordner)
{
$this->bild = $in_bild;
$this->ordner = $in_ordner;
}
function verkleinern($overwrite, $hoehe_angabe, $breite_angabe)
{
$PicPathIn = $this->ordner;
$PicPathOut = $this->ordner;
// Orginalbild
$bild_1 = $this->bild;
$name_array = explode(".", $bild_1);
if ($overwrite == false)
$bild_1_klein = $name_array[0] . "_klein." . $name_array[count($name_array) - 1];
elseif ($overwrite == true)
$bild_1_klein = $bild_1;
// Bilddaten feststellen
$size = getimagesize($PicPathIn . "/" . $bild_1);
$breite = $size[0];
$hoehe = $size[1];
$neueHoehe = $hoehe_angabe;
$HoeheTeiler = $hoehe / $neueHoehe;
$neueBreite = intval($breite / $HoeheTeiler);
if ($neueBreite > $breite_angabe)
{
$neueHoehe = $hoehe_angabe * ($breite_angabe / $neueBreite);
$HoeheTeiler = $hoehe / $neueHoehe;
$neueBreite = intval($breite / $HoeheTeiler);
}
// JPG
switch ($name_array[count($name_array) - 1])
{
case "pjpeg" :
$altesBild = imagecreatefromjpeg($PicPathIn . "/" . $bild_1);
break;
case "jpg" :
$altesBild = imagecreatefromjpeg($PicPathIn . "/" . $bild_1);
break;
case "jpeg" :
$altesBild = imagecreatefromjpeg($PicPathIn . "/" . $bild_1);
break;
case "jpe" :
$altesBild = imagecreatefromjpeg($PicPathIn . "/" . $bild_1);
break;
case "gif" :
$altesBild = imagecreatefromgif($PicPathIn . "/" . $bild_1);
break;
case "png" :
$altesBild = imagecreatefrompng($PicPathIn . "/" . $bild_1);
break;
case "PJPEG" :
$altesBild = imagecreatefromjpeg($PicPathIn . "/" . $bild_1);
break;
case "JPG" :
$altesBild = imagecreatefromjpeg($PicPathIn . "/" . $bild_1);
break;
case "JPEG" :
$altesBild = imagecreatefromjpeg($PicPathIn . "/" . $bild_1);
break;
case "JPE" :
$altesBild = imagecreatefromjpeg($PicPathIn . "/" . $bild_1);
break;
case "GIF" :
$altesBild = imagecreatefromgif($PicPathIn . "/" . $bild_1);
break;
case "PNG" :
$altesBild = imagecreatefrompng($PicPathIn . "/" . $bild_1);
break;
default :
die("Unbekannter Bildtyp!");
break;
}
$neuesBild = imagecreatetruecolor($neueBreite, $neueHoehe);
if(!imagecopyresampled($neuesBild, $altesBild, 0, 0, 0, 0, $neueBreite, $neueHoehe, $breite, $hoehe)) {die("<p>Fehler beim Erstellen des Bildes!</p>");}
@imagejpeg($neuesBild, $PicPathOut . "/" . $bild_1_klein, 100);
}
}
Geändert von Ichthys (13.04.2009 um 21:39:07 Uhr)
|
14.04.2009, 00:39:54
|
Junior Member
|
|
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
|
|
AW: Transparente Bilder bekommen schwarzen Hintergrund
Hi,
das selbe Problem habe ich auch.
Mir ist aber aufgeallen dass Du nur eine JPG-Verarbeitung eingbaut hast.
Transparente Hintergründe gibt's aber nur bei GIF und PNG.
edit:
Hier mal mein Code:
PHP-Code:
file_put_contents(FILE_TMP."/".UNIQID."_flag_{$_GET['type']}".$flag['id'],$flag['flag_'.$_GET['type'].'_file']);
$img_size = getimagesize(FILE_TMP."/".UNIQID."_flag_{$_GET['type']}".$flag['id']);
# Index 0 = Breite
# Index 1 = Höhe
if ($img_size[2] == IMAGETYPE_JPEG) { $src_img = imagecreatefromjpeg(FILE_TMP."/".UNIQID."_flag_{$_GET['type']}".$flag['id']); }
elseif ($img_size[2] == IMAGETYPE_GIF) { $src_img = imagecreatefromgif(FILE_TMP."/".UNIQID."_flag_{$_GET['type']}".$flag['id']); }
elseif ($img_size[2] == IMAGETYPE_PNG) { $src_img = imagecreatefrompng(FILE_TMP."/".UNIQID."_flag_{$_GET['type']}".$flag['id']); }
if (isset($_GET['height']) && !isset($_GET['width']))
{
$new_size['height'] = $_GET['height'];
$new_size['ratio'] = $img_size[1]/$new_size['height'];
$new_size['width'] = $img_size[0]/$new_size['ratio'];
}
elseif (!isset($_GET['height']) && isset($_GET['width']))
{
$new_size['width'] = $_GET['width'];
$new_size['ratio'] = $img_size[0]/$new_size['width'];
$new_size['height'] = $img_size[1]/$new_size['ratio'];
}
elseif (isset($_GET['height']) && isset($_GET['width']))
{
$new_size['width'] = $_GET['width'];
$new_size['height'] = $_GET['height'];
}
elseif (!isset($_GET['height']) && !isset($_GET['width']))
{
$new_size['width'] = $img_size[0];
$new_size['height'] = $img_size[1];
}
$dst_img = imagecreatetruecolor(number_format($new_size['width'],'0',',','.'),$new_size['height']);
imagecopyresampled($dst_img,$src_img,'0','0','0','0',number_format($new_size['width'],'0',',','.'),$new_size['height'],$img_size[0],$img_size[1]);
if ($img_size[2] == IMAGETYPE_JPEG)
{
header("Content-type: image/jpeg");
imagejpeg($dst_img);
}
elseif ($img_size[2] == IMAGETYPE_GIF)
{
header("Content-type: image/gif");
imagegif($dst_img);
}
elseif ($img_size[2] == IMAGETYPE_PNG)
{
header("Content-type: image/png");
imagepng($dst_img);
}
imagedestroy($dst_img);
imagedestroy($src_img);
unlink(FILE_TMP."/".UNIQID."_flag_{$_GET['type']}".$flag['id']);
Kai aka Knight1
Geändert von knight1 (14.04.2009 um 00:45:51 Uhr)
Grund: Code hinzugefügt.
|
14.04.2009, 08:12:45
|
Anfänger
|
|
Registriert seit: Feb 2006
Alter: 35
Beiträge: 96
|
|
AW: Transparente Bilder bekommen schwarzen Hintergrund
Tue ich das nicht mit imagecreatefromgif & imagecreatefrompng?
|
14.04.2009, 08:39:08
|
Junior Member
|
|
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
|
|
AW: Transparente Bilder bekommen schwarzen Hintergrund
Zitat:
Zitat von David Schirge
Tue ich das nicht mit imagecreatefromgif & imagecreatefrompng?
|
Sorry, hatte ich übersehen.
|
14.04.2009, 16:26:14
|
Anfänger
|
|
Registriert seit: Feb 2006
Alter: 35
Beiträge: 96
|
|
AW: Transparente Bilder bekommen schwarzen Hintergrund
Hm, also ich weiß ja, dass man mit imagecreatetruecolor() Farben angeben kann, die transparent sind. Aber da bei mir ja alle möglichen Bilder verarbeitet werden, fällt diese Möglichkeit ja raus. Ich kann ja nicht im Voraus wissen, welche transparenten Farben verwendet werden.
|
14.04.2009, 16:36:42
|
Junior Member
|
|
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
|
|
AW: Transparente Bilder bekommen schwarzen Hintergrund
Zitat:
Zitat von David Schirge
Hm, also ich weiß ja, dass man mit imagecreatetruecolor() Farben angeben kann, die transparent sind. Aber da bei mir ja alle möglichen Bilder verarbeitet werden, fällt diese Möglichkeit ja raus. Ich kann ja nicht im Voraus wissen, welche transparenten Farben verwendet werden.
|
Geht mir genauso. Ich habe insgesammt 193 Flaggen-Grafiken in der DB und kann im vorraus nicht sagen welche der Flaggen einen Teil transparent hat und wo genau der liegt.
Ich dachte immer dass PHP die Transparentwerte erkennt und übernimmt.
Anscheinend ist dies nicht der Fall.
Kai aka Knight1
|
15.04.2009, 08:42:32
|
Anfänger
|
|
Registriert seit: Feb 2006
Alter: 35
Beiträge: 96
|
|
AW: Transparente Bilder bekommen schwarzen Hintergrund
Anscheinend geht das bei PHP wohl wirklich (noch) nicht. Jedenfalls konnte mir Goggle da auch nicht helfen. Echt schade.
|
15.04.2009, 11:52:17
|
|
Senior Member
|
|
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
|
|
AW: Transparente Bilder bekommen schwarzen Hintergrund
http://de.php.net/imagesavealpha
http://de.php.net/manual/de/function...hablending.php
.. vllt helfen die dir noch weiter, probier mal an den Beispielen rum! Hat das auch mit dem schwarzen BG, hab es dann mit Hilfe dieser 2 funcs in den Griff bekommen. Ich hab allerdings nur mit PNGs gearbeitet.
Domi
__________________
the best way to be ready for the future is to invent it
|
15.04.2009, 16:58:31
|
Anfänger
|
|
Registriert seit: Feb 2006
Alter: 35
Beiträge: 96
|
|
AW: Transparente Bilder bekommen schwarzen Hintergrund
Danke. Werde ich mal ausprobieren.
|
16.04.2009, 13:42:34
|
|
Senior Member
|
|
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
|
|
AW: Transparente Bilder bekommen schwarzen Hintergrund
Zitat:
Zitat von David Schirge
Danke. Werde ich mal ausprobieren.
|
mich würde interessieren obs geklappt hat und wie :)
__________________
the best way to be ready for the future is to invent it
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 10:28:14 Uhr.
|