php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 10-03-2005, 22:00
KTJ
 Junior Member
Links : Onlinestatus : KTJ ist offline
Registriert seit: Jul 2002
Beiträge: 105
KTJ ist zur Zeit noch ein unbeschriebenes Blatt
Standard [GD] Wiedermal: Transparenz bei PNGs

Ich weiss, dass es das Thema bereits gab, doch trotz googeln, PHP Manual und den Threads hier konnte ich bislang keine Lösung für mein Problem finden.
Dabei geht es wie bereits gesagt um die Transparenz bei PNGs.
Ich habe es bereits mit imagecolortransparent() und unzähligen Möglichkeiten die transparente Hintergrundfarbe zu bestimmen und zu dem imagecolortransparent() zu übergeben (imageallocate(), imagecolorexact(), imagecolorat()) versucht, bis ich dann hier etwas von einem imagealphablending() las...welches ich auch probiert habe...noch in Kombination mit imagecreatetruecolor() statt imagecreate() und einem imagecolorallocatealpha()...was aber auch keinen Erfolg brachte. Insgesamt eben unzählige verschiedene Kombinationen, die allesamt nicht halfen, deswegen habe ich mich dazu entschlossen hier ein Thema aufzumachen.
Anzumerken wäre vllt. noch, das es einmal geklappt hat, das Image transparent zu machen, undzwar mit imagecolorat() auf ein bestimmtes Pixel, was die später transparente Farbe enthält (reines rot) und anschliessendem imagecolortransparent()...nur ist das keinesfalls eine saubere Lösung und über imageallocate() bzw. den RGB Code dieses reinen Rotes (255,0,0) komme ich nicht auf die Lösung, was mich an sich verwundert, da das imagecolorat() und ein reines definieren der Farbe mit 255,0,0 ja das selbe Ergebnis liefern sollte. Jedoch habe ich auch schon in einem Grafikprogramm die Farbe in dem Pixel betrachtet und kam so auch auf eine Zusammensetzung der Farbtöne von 255,0,0.
Ich weiss einfach nichtmehr was ich noch probieren soll.

Ansich soll das Programm folgendes machen (vereinfacht):

Image 1 ist ein neues Image was erstellt werden soll.
Image 2 ist ein bereits bestehendes mit dem besagten Rot, das am Ende transparent sein soll.
Nun soll Image 2 nach Image 1 kopiert werden und Image 1 mit der transparenten Hintergrundfarbe abgespeichert werden.

Hier noch mein (aktueller) Stand/Code:

PHP-Code:
<?php

$file 
"image.png";
$dir "test/bla"//zum hinspeichern

header("Content-type: image/png");

$src_img imagecreatefrompng($file);
$img imagecreatetruecolor(200,200);

$red imagecolorallocatealpha($img25500127);

ImageAlphaBlending($imgtrue);

imagecopy($img$src_img0000200200);

imagepng($img$dir."/test.png");

imagedestroy($img);

?>
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 11-03-2005, 23:44
djayk
 Newbie
Links : Onlinestatus : djayk ist offline
Registriert seit: Mar 2005
Beiträge: 6
djayk ist zur Zeit noch ein unbeschriebenes Blatt
Standard Willst du das nur transparent speichern ?

Willst du das Bild nur transparenz wandeln und dann speichern für die eigene Verwendung oder soll es nacher noch in einem Browser transparent dargestellt werden ?!?

<?
$file = "pic.png";
$dir = ".";
header("Content-type: image/png");
$src_img = imagecreatefrompng($file);
$img = imagecreatetruecolor(200,200);
$red = imagecolorallocatealpha($img, 0, 0, 0, 127);
$white = ImageColorAllocate ($img, 255, 255, 255);
ImageColorTransparent($img, $white);
//ImageAlphaBlending($img, true);
imagecopy($img, $src_img, 0, 0, 0, 0, 200, 200);
imagepng($img, $dir."/test.png");
imagedestroy($img);
?>

Wenn ich das ganze so mache, ist das Bild transparent. Zumindest wird es im Firefox und mit Paint Shop 8 so interpretiert. Der IE 6.0 natürlich macht es mal wieder nicht ;o). Daher bin ich auch mehr Fan von .gif, wenn es für den IE ist. Sonst halt nur noch mit Firefox arbeiten, denn der erkennt das transparente Ergebnis (test.png) ja.

Geändert von djayk (11-03-2005 um 23:46 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 12-03-2005, 18:10
KTJ
 Junior Member
Links : Onlinestatus : KTJ ist offline
Registriert seit: Jul 2002
Beiträge: 105
KTJ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also, für meine Zwecke wär es wichtig, dass das Bild transparent _abgespeichert_ wird und später auch in allen Browsern transparent dargestellt wird.
Ich persönlich benutze den Firefox, aber ich will es "massentauglich" haben und da der IE auch von vielen Usern benutzt wird brauch ich eine Möglichkeit das Bild transparent zu speichern, sodass es später auch von jedem der es aufruft so transparent dargestellt wird.
Normal würde ich bei so etwas auch GIF preferieren, doch da streikt meine GD Version leider...kein GIF Support...

gd_info liefert folgendes:
Zitat:
array(11) { ["GD Version"]=> string(27) "bundled (2.0.15 compatible)" ["FreeType Support"]=> bool(true) ["FreeType Linkage"]=> string(13) "with freetype" ["T1Lib Support"]=> bool(false) ["GIF Read Support"]=> bool(true) ["GIF Create Support"]=> bool(false) ["JPG Support"]=> bool(true) ["PNG Support"]=> bool(true) ["WBMP Support"]=> bool(true) ["XBM Support"]=> bool(true) ["JIS-mapped Japanese Font Support"]=> bool(false) }
Soweit ich mich erinnern kann wurde der GIF Support aus irgendwelchen Gründen in neueren GD Versionen abgeschafft. Aber falls es keine andere Möglichkeit gibt, werde ich wohl auf eine GIF supportende (ggf. ältere) GD Version patchen müssen.

Wäre GIF die einzige brauchbare Lösung?
Mit Zitat antworten
  #4 (permalink)  
Alt 16-03-2005, 22:53
KTJ
 Junior Member
Links : Onlinestatus : KTJ ist offline
Registriert seit: Jul 2002
Beiträge: 105
KTJ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also, ich habe inzwischen dein Beispiel ausprobiert (vielen Dank nochmal) und den Hexcode für die transparente Farbe von Weiss auf Rot umgeschrieben...und tatsächlich geht es...zumindestens mit meinem Firefox. Nur wie du bereits sagtest streikt der IE da...aber ich brauche eine Crossbrowser Variante...hatt da jemand eine Idee wie es noch realisierbar wär? Oder ist ein umpatchen auf eine GIF kompatible GD Version dann am Ende doch die einzige Lösung?
Mit Zitat antworten
  #5 (permalink)  
Alt 16-03-2005, 23:31
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also ich kombiniere transparente pngs mit jpegs und gebe das ganze als transparentes png aus => http://www.megasprueche.de ... in meinem ie klappt es

codetechnisch sieht das in etwa so aus:
PHP-Code:
<?
$file 
"pic.png";
$dir "."
header("Content-type: image/png");
$src_img imagecreatefrompng($file);
$img imagecreate(200,200);
//$img = imagecreatetruecolor(200,200);
//$red = imagecolorallocatealpha($img, 0, 0, 0, 127);
$white ImageColorAllocate ($img255255255);
ImageColorTransparent($img$white);
//ImageAlphaBlending($img, true);
imagecopy($img$src_img0000200200);
imagepng($img$dir."/test.png");
imagedestroy($src_img);
imagedestroy($img);
?>
wenn ich mich recht entsinne, warén es 8-bit pngs, keine 24-bit.
__________________
Kissolino.com
Mit Zitat antworten
  #6 (permalink)  
Alt 17-03-2005, 18:12
KTJ
 Junior Member
Links : Onlinestatus : KTJ ist offline
Registriert seit: Jul 2002
Beiträge: 105
KTJ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also soweit ich das sehe wäre die einzige Veränderung das imagecreatetruecolor() durch ein imagecreate() zu ersetzen und das 2te imagedestroy() am Ende.
Wenn ich es so probiere funktioniert es leider gar nicht. Weder im Firefox, noch im IE.
Mein Ausgangs-PNG ist übrigens auch ein 8-Bits-PNG.

Ich habe mir jetzt überlegt doch meine GD Version zu wechseln. Soweit ich auf http://www.boutell.com/gd/ gelesen habe ist der GIF Support seit 2.0.28 wieder mit dabei. Ich habe mir jetzt die GD Lib Version 2.0.33 gedownloadet und entpackt, nur weiss ich nicht, was ich damit machen soll...

Als ich meine alte GD Lib installiert hatte, hatte ich hier gelesen, dass man das ; vor "extension=php_gd2.dll" in der php.ini entfernen muss, um die GD Ver zum laufen zu bringen. Soweit ging es ja auch. Aber jetzt habe ich ja eine neue Version und will meine alte aktualisieren. Aber wie? Mit den ganzen *.c Datein etc. im entpackten Ordner kann ich wenig anfangen und das einzige was ich mir vorstellen könnte, wär dass ich die "php_gd2.dll" im Extensions-Verzeichnis updaten muss, aber so eine Datei liegt meiner GD Version nicht bei.
In der Installationsanleitung oder über eine Google Suche komme ich immer nur zu einer Liste von Perl Commands o.ä. die man benutzen soll, die mir andererseits aber auch nicht weiterhelfen...

Geändert von KTJ (23-03-2005 um 23:25 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 23-03-2005, 23:37
KTJ
 Junior Member
Links : Onlinestatus : KTJ ist offline
Registriert seit: Jul 2002
Beiträge: 105
KTJ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Kann mir da denn keiner weiterhelfen?

Also ich habe z.Z. PHP Version 4.3.3 und GD 2.0.15. Meine GD Lib möchte ich updaten auf Version 2.0.33. Ich habe die Version auch gedownloadet und entpackt...nur weiss ich jetzt nicht, was ich damit anfangen soll bzw. wie ich sie installieren kann.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

SMT

Server Monitoring & Management Tool Das SMT wurde von einem Administrator für Administratoren entwickelt, es vereinfacht den Alltag in der klassischen Administration und Verwaltung. Mit dem SMT kannst Du alle Deine Server & Dienste verwalten und überwach

09.10.2020 palle_1977 | Kategorie: PHP
phplinX-Erotikportal 4 ansehen phplinX-Erotikportal 4

Erweiterbares Portal speziell für Erotik mit den Modulen Webkatalog, Bannermanagement und Kleinanzeigenmarkt. Sämtliche Module können über einen einzigen Adminbereich verwaltet werden.

18.06.2020 Cosinus14 | Kategorie: PHP/ Anzeigenmarkt
Erotik-Portal

Mit unsererem Erotik-Portal erhalten Sie ein komplettes Internetprojekt inklusive einer bedienerfreundlichem Administration sowie zahlreichen wichtigen Funktionen. Unser auf PHP und MySQL basierendes Script bietet Ihnen - und Ihren Besuchern - komfort

18.06.2020 ISD-Genthin | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:15 Uhr.