SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 13.04.2009, 21:16:21
Ichthys Ichthys ist offline
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$altesBild0000$neueBreite$neueHoehe$breite$hoehe)) {die("<p>Fehler beim Erstellen des Bildes!</p>");}
    @
imagejpeg($neuesBild$PicPathOut "/" $bild_1_klein100);
  }


Geändert von Ichthys (13.04.2009 um 21:39:07 Uhr)
Mit Zitat antworten
  #2  
Alt 14.04.2009, 00:39:54
knight1 knight1 ist offline
Junior Member
 
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
knight1 eine Nachricht über MSN schicken knight1 eine Nachricht über Skype™ schicken
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.
Mit Zitat antworten
  #3  
Alt 14.04.2009, 08:12:45
Ichthys Ichthys ist offline
Anfänger
 
Registriert seit: Feb 2006
Alter: 35
Beiträge: 96
AW: Transparente Bilder bekommen schwarzen Hintergrund

Tue ich das nicht mit imagecreatefromgif & imagecreatefrompng?
Mit Zitat antworten
  #4  
Alt 14.04.2009, 08:39:08
knight1 knight1 ist offline
Junior Member
 
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
knight1 eine Nachricht über MSN schicken knight1 eine Nachricht über Skype™ schicken
AW: Transparente Bilder bekommen schwarzen Hintergrund

Zitat:
Zitat von David Schirge Beitrag anzeigen
Tue ich das nicht mit imagecreatefromgif & imagecreatefrompng?
Sorry, hatte ich übersehen.
Mit Zitat antworten
  #5  
Alt 14.04.2009, 16:26:14
Ichthys Ichthys ist offline
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.
Mit Zitat antworten
  #6  
Alt 14.04.2009, 16:36:42
knight1 knight1 ist offline
Junior Member
 
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
knight1 eine Nachricht über MSN schicken knight1 eine Nachricht über Skype™ schicken
AW: Transparente Bilder bekommen schwarzen Hintergrund

Zitat:
Zitat von David Schirge Beitrag anzeigen
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
Mit Zitat antworten
  #7  
Alt 15.04.2009, 08:42:32
Ichthys Ichthys ist offline
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.
Mit Zitat antworten
  #8  
Alt 15.04.2009, 11:52:17
Benutzerbild von Domi
Domi Domi ist offline
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
Mit Zitat antworten
  #9  
Alt 15.04.2009, 16:58:31
Ichthys Ichthys ist offline
Anfänger
 
Registriert seit: Feb 2006
Alter: 35
Beiträge: 96
AW: Transparente Bilder bekommen schwarzen Hintergrund

Danke. Werde ich mal ausprobieren.
Mit Zitat antworten
  #10  
Alt 16.04.2009, 13:42:34
Benutzerbild von Domi
Domi Domi ist offline
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 Beitrag anzeigen
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
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bilder nach DB Abfrage anzeigen space PHP Grundlagen 1 12.06.2006 10:06:20
Bilder darstellen schickimicky PHP Grundlagen 5 12.01.2006 16:49:06
Bilder aus dem Server in Tabellen anzeigen shehrazade PHP Grundlagen 7 10.10.2005 16:23:44
Bilder aus einem Verzeichnis holen hoschy PHP Grundlagen 3 20.12.2004 17:38:54
Bilder Problem Adromir PHP für Fortgeschrittene und Experten 3 06.04.2004 11:49:18


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:28:14 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt