Transparenz in PNG mit PHP erstellen - Seltsames Problem

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • HCi
    replied
    GD kann das sehr wohl.

    PHP Code:
    imagealphablending($imfalse);
    ImageSaveAlpha($imtrue); 
    Damit erstelle ich PNGs mit tranparenz on-the-fly

    Die frage die sich mir stellt:
    Wenn es in Firefox mit transparentem hintergrund angezeigt wird. Wie gehst du dann vor um das Bild zu bearbeiten?

    HTML Code:
    Rechtsklick -> Grafik kopieren?
    Wenn dies der Fall ist, dann kann ich dir sagen das es nicht an GD liegt... sondern an Firefox.

    Die Lösung dazu wäre es einfach das Bild auf dem Rechner zu speichern und dann in PS zu öffnen.

    Leave a comment:


  • BananaJo
    replied
    und hier einmal um alle vorhandenen bilder in einer Schweife zu bearbeiten

    PHP Code:
    for i in *_d.jpg; do convert $i -fuzz 1000 -transparent white -resize 400x400  ${i/jpg/png} ; echo $i;  done 

    Leave a comment:


  • BananaJo
    replied
    also ich bearbeite die Bilder jetzt über die Console und um Das bild sehr sauber vom weißen Hitergrund freizustellen, braucht man nicht mehr als

    PHP Code:
    convert image.jpg -fuzz 1000 -transparent white image.png 
    jetzt fehlt noch das Script für das automatische bearbeiten aller Bilder.. aber das ist dann nur noch ein kleines Problem

    Leave a comment:


  • UzumakiNaruto
    replied
    hau mal den code raus falls andere auch das problem haben sollten ;-)

    Leave a comment:


  • BananaJo
    replied
    Also ich sage nur ImageMagic!!!!!!!

    Damit hat es sofort funktioniert und besser als zuvor!!!! Ich bin begeistert!!!
    Das resultat ist genau so wie mit Photoshop!! was besseres gibt es nicht!!!

    Leave a comment:


  • h3ll
    replied
    Kannst du mal so ein Beispielbild zur Verfügung stellen?
    Last edited by h3ll; 25-04-2013, 21:06.

    Leave a comment:


  • BananaJo
    replied
    Wozu soll das alles überhaupt gut sein? Um Bilder transparent darzustellen oder einzufärben braucht man kein PHP. Das kann schon der Browser selber.
    das steht doch am Anfang des threads wozu das ganze hier gemacht wird

    Leave a comment:


  • h3ll
    replied
    Wozu soll das alles überhaupt gut sein? Um Bilder transparent darzustellen oder einzufärben braucht man kein PHP. Das kann schon der Browser selber.

    Leave a comment:


  • Melewo
    replied
    Nun gut, habe auch noch etwas experimentiert und nur mit imagefill nichts fertig bekommen, zumindest keine transparente Vorlage zur weiteren Verwendung. Problemlos lassen sich hingegen Bereiche auswählen, mit einer Farbe füllen und diese Farbe transparent schalten. Die Deckfähigkeit der gewählten Farbe wird sozusagen beeinflusst, doch die Ebenen gehen wohl nicht einzeln abzuspeichern oder ich wüsste gerade nicht wie.

    PHP Code:
    <?php
    header
    ("Content-Type: image/png");

    $bild "test.png";
    $img  imagecreatefrompng($bild);

    $trans imagecolorallocatealpha($img2550060);
    imagefilledrectangle($img007070$trans);

    imagepng($img);
    imagepng($img"test_image.png");
    imagedestroy($img);

    // test.png (falls vorhanden) wird aufgerufen mit scriptname.php
    ?>
    Um ein Bild im Browser anzuzeigen und gleichzeitig zu speichern, muss es zweimal mit imagepng ausgegeben werden.

    Leave a comment:


  • BananaJo
    replied
    alo transparenzen sind nur bei PNG möglich.
    Leider funktioniert das auch nicht... ich probiere es mal mit ImageMagic .. das soll das deutlich mehr drauf haben.. ich teste es einfach mal..

    Leave a comment:


  • Melewo
    replied
    Originally posted by BananaJo View Post
    PHP Code:
    <?php
    $o 
    "original.jpg";

    $img imagecreatefromjpeg($o);

    $index imagecolorallocatealpha($img255255255127); 
    imagecolortransparent($img$index);

    imagepng($img"png_image.png");

    ?>
    Wo ich mir jetzt nicht sicher bin, Du öffnest ein jpg und erstellst ein jpg und speicherst es dann mit png. Ob das so geht, weiß ich nicht, da JPG und Transparenz irgendwie nicht zusammen passen. Weiß jetzt nicht was Photoshop alles kann, arbeite für meine Belange mit PSP, doch kenne es da gar nicht anders, als dass ich ein JPG-Bild nicht mit Transparenz speichern kann. Würde mal sagen, speichere ein Bild erst als PNG, öffne es dann mit imagecreatefrompng und nicht mit imagecreatefromjpeg, rufe die Script-Seite (ohne HTML) mit dem entsprechenden Image-Header im Browser auf, vielleicht bringt das mehr.

    Leave a comment:


  • BananaJo
    replied
    PHP Code:
    $c 255;
    $trans imagecolorallocatealpha($img$c$c$c127);
    imagecolortransparent($img$trans);
    imagefilledrectangle($img00$w$h$trans); 
    bring leider auch nicht viel... genau das selbe problem..

    das Bild transparent zu bekommen ist ja kein Problem, nur eben, wenn ich es wieder aufrufe um es weiter zu bearbeiten, dann ist die transparenz weg oder der Hintergrund ist schwarz.

    also ich schlage mich nun schon 2 Wochen mit diesem Problem rum und glaube langsam, dass es einfach nicht mit PHP möglich ist.

    Wie bereits gesagt, funktioniert es super, wenn ich eine PNG direkt in Photoshop erstelle und dann verarbeite, funktioniert alles super... nur leider nicht, wenn ich die PNG mit PHP erzeuge..

    Leave a comment:


  • Melewo
    replied
    Dabei fällt mir ein, was ich schon vor Wochen erledigen wollte und zwischendurch leider in Vergessenheit geriet (eine Beschreibung fertig zu machen). Nun gut, was ich in Deinem Code nicht sehe, den Bereich, den Du mit Transparenz füllen und so abspeichern möchtest. Irgendwo müsste doch da doch wohl imagefilledrectangle folgen, also der Bereich, der in diesem Fall so groß sein sollte, wie das Bild und den Du mit Transparenz füllen möchtest oder nicht? Zumindest hatte ich das so verstanden und bei meinen Scripts so gehandhabt. Imagefill geht wohl auch, wenn das ganze Bild mit Transparenz gefüllt werden soll, habe ich nur noch nicht probiert.

    Text in Bilder mit PHP und imagettftext einfügen

    Für was ist diese Zeile gut?

    HTML Code:
    <img src="png_image.png" />
    Rufst Du das Bild zum Speichern bzw. im Browser nicht über das Script auf und setzt dabei einen Image-Header?

    PHP Code:
    header("Content-type: image/png"); 
    Nicht das ich mich gut auskennen würde mit der Bildverarbeitung, nur hat es praktisch funktioniert, auch mit der Transparenz. Bei mir rufe ich die Bilder mit der Script-Seite images.php auf, die enthält einen Image-Header und HTML hat in dieser Script-Seite nichts verloren. Anschließend kann ich dann die gespeicherten Bilder wie normale Bilder verwenden und mit image.png aufrufen.
    Last edited by Melewo; 25-04-2013, 18:29.

    Leave a comment:


  • BananaJo
    replied
    $index = imagecolorexact($img, 255, 255, 255);
    ich auch auch schon probiert.. das macht leider keinen unterschied

    Leave a comment:


  • mephisto111
    replied
    Transparenzproblem

    Hallo BananaJo,

    ersetze mal die Zeile

    PHP Code:
    $index imagecolorallocatealpha($img255255255127); 
    durch

    PHP Code:
    $index imagecolorexact($img255255255); 

    Leave a comment:

Working...
X