Ankündigung

Einklappen
Keine Ankündigung bisher.

problem bei verständnis mit bildmanipulation

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • problem bei verständnis mit bildmanipulation

    ich habe eine frage. wenn ich ein truecolorimage erstelle bekomme ich es nicht hin dass ich denhintergrund transparent bekomme. ich habe 2 verschiedene ansätze probiert, die eigentlich funktionieren müssten (habe alles beachtet) jedoch tun sie es NICHT.

    Version 1:
    PHP-Code:
    <?php
    Header
    ("Content-Type: image/gif");  // bild mit browser ausgeben

    $img ImageCreateTrueColor(200,50);  // erzeuge bild mit schwarzem hintergrund

    $background ImageColorAllocate($img,0,0,0);  // setze hintergrund auf farbe $background
    ImageColorTransparent($img$background);  // setze farbe $background als transparent

    ImageGIF($img);
    ImageDestroy($img);
    ?>
    Version 2:
    PHP-Code:
    <?php
    Header
    ("Content-Type: image/gif");  // bild mit browser ausgeben

    $img ImageCreateTrueColor(200,50);  // erzeuge bild mit schwarzem hintergrund

    $background ImageColorAllocate($img,0,0,0);  // setze hintergrund auf farbe $background
    $col ImageColorAllocate($img,255,0,0);  // setze eine neue farbe
    ImageFill($img0,0$col);  // bild mit neuer farbe füllen
    ImageColorTransparent($img$col);  // die neue farbe als transparent setzen

    ImageGIF($img);
    ImageDestroy($img);
    ?>
    wo habe ich denn da einen fehler? denn denkfehler sollte es ja nicht sein. es funktioniert übrigens auch mit png nicht.
    mfg Alex

  • #2
    Ich will ja nichts sagen, aber bei mir funktionieren beide Versionen

    Kommentar


    • #3
      sonderbar. dann muss ich meinen xampp mal durchchecken.

      EDIT: bei meinem xampp passt eigentlich alles. wie kanns das geben?
      phpinfo: php 4.4.0, gd 2.0.28, gifcreate enabled, gifread enabled.

      bild wird schwarz dargestellt.
      mfg Alex

      Kommentar


      • #4
        @michigras: ich hab das jetzt auch auf meinem server probiert... funktioniert auch nicht. weiss nicht warum das bei dir funktioniert. kann ich ehrlich gesagt aber auch nicht ganz glauben.
        Version 1 -> schwarzes bild
        Version 2 -> rotes bild

        und nix von transparenz.
        mfg Alex

        Kommentar


        • #5
          Ich würde auch generell erst die Fläche mit einer Farbe füllen, die dann als Transparent erklärt wird.
          Oder mal mit imagecolorallocatealpha versuchen ...

          Kommentar


          • #6
            @cix: im beispiel 1 hab ich das genauso gemacht: den automatisch schwarzen hintergrund habe ich mit ImageColorAllocate nochmals explizit gefärbt. und danach habe ich diese farbe auf transparent gesetzt. wäre doch alles konform, aber funktioniert nicht.

            bezüglich ImageColorAllocateAlpha: es funktioniert auch nicht mit ICAA alleine, jedoch in kombination mit ICT, jedoch auch nur wenn bei ICAA vorher $alpha auf einen wert zwischen 1 und 127 gesetzt wird. jedoch ist hier auch kein unterschied zu sehen. also nix mit opacy. noch ein sonderbares phänomen: der text wird ja wie aus dem code ersichtlich ist als ROT ausgegeben. jedoch ist dies nur der fall wenn man bei ICAA eben den besagten wert zwischen 1 und 127 eingibt. wird 0 eingegeben, so wird ein schwarzes bild mit WEISSEM text ausgegeben.

            mehr als sonderbar nicht? hier die ergebnisse online:
            - ImageColorAllocateAlpha mit $alpha = 0
            - ImageColorAllocateAlpha mit $alpha = 1
            PHP-Code:
            <?php
            // TEST 3 - ImageColorAllocateAlpha
            Header("Content-Type: image/gif");  // bild mit browser ausgeben

            $img ImageCreateTrueColor(200,50);  // erzeuge bild mit schwarzem hintergrund

            $background ImageColorAllocateAlpha($img,0,0,0,1);  // setze hintergrund auf farbe $background
            ImageColorTransparent($img$background);  // setze farbe $background als transparent

            // testtext erstellen
            $textcolor ImageColorAllocate($img,255,0,0);
            ImageString($img,1,0,0,'Das Bild existiert',$textcolor);

            ImageGIF($img);
            ImageDestroy($img);
            ?>
            hier online zu sehen:
            mfg Alex

            Kommentar


            • #7
              @cix: im beispiel 1 hab ich das genauso gemacht:
              Im Beispiel 1 hattest du nur eine Farbe definiert und mehr nicht.

              PS:
              GIF-Bilder gehen nur Transparent oder Nicht-Transparent, also 0 oder 100.
              Alle anderen Zwischenwerte, wie bei dir mit 1, sind zwecklos.
              Halbtransparenzen besser mit PNG testen.

              Kommentar


              • #8
                ich habe eine farbe definiert. die erste definierte farbe wird automatisch als hintergrundfarbe des bildes gesetzt. (http://at2.php.net/manual/en/functio...orallocate.php auch zu sehen auf imagecolorallocatealpha beispiel 928, zeile 6 und 7)

                da ich eh nur den hintergrund komplett transparent haben möchte ist das dann mit 1 auch ok. danke für den hinweis bezüglich des unterschiedes von gif/png.

                aber ein wenig sonderbar bleibt die ganze sache meines erachtens nach schon, denn die beiden oben beschriebenen beispiele 1 und 2 müssten ja auch funktionieren. wie auch immer... sonderbar...
                mfg Alex

                Kommentar


                • #9
                  Dein erstes Beispiel ist eigentlich auch nicht ganz richtig.
                  Bei einen GIF-Bild ist ImageCreateTrueColor etwas fehl am Platz, da GIF nur 256-Farben unterstützt.
                  Du erstellst praktisch ein 24-bit Bild und setzt es dann auf 256-Farben wieder zurück.
                  Und vielleicht ist dies der Knackpunkt.

                  Probier mal nur mit ImageCreate(), jedenfalls wenn du mit dem GIF-Format arbeiten willst.

                  EDIT:

                  Jo meine Vermutung:
                  http://www.cix88.de/cix_php/php_graf...parent_gif.php

                  Das 1.Bild ist transparent, das 2. Bild nicht

                  Kommentar


                  • #10
                    danke für den hinweis. somit stehe ich wohl vor einem problem. denn ich möchte mit ttf´s arbeiten. diese wirken aber bei der vorgehensweise mit imagecreate ausgefranst und unschön und mit imagecreatetruecolor werden sie schön dargestellt. auf png´s möchte ich verzichten, da es hier ja bekanntlicherweise darstellungsprobleme mit internet explorer 6 gibt.

                    so were ich wohl die variante mit ICTC und ICAA arbeiten müssen. unschön aber die einzige möglichkeit.
                    mfg Alex

                    Kommentar


                    • #11
                      diese wirken aber bei der vorgehensweise mit imagecreate ausgefranst
                      Jo was auch bei GIF normal ist !
                      Auch jedes anders Programm und/oder Software würde da nichts bringen.
                      Das geht nur mit PNG, was dann auch Halbtransparenz darstellt und somit für weiche Kanten sorgt.

                      Kommentar


                      • #12
                        dass das so kompliziert ist hätte ich mir nicht gedacht. dachte ich doch es könnte kein problem darstellen ein bild zu erstellen, dieses als transparent zu definieren und dann einfach eine schrift reinzuschreiben welche EINFÄRBIG ist. ich hätte gedacht dass es nur zum ausfranzen kommt wenn die schrift mehrfärbig ist. das ist wirklich ärgerlich.
                        mfg Alex

                        Kommentar


                        • #13
                          Najaaaaaaa, wenn du ein Grafikprogramm hast, dann erstellt doch mal ein Gif-Bild mit transparenten Hintergrund und versuch darüber ein Text zu legen mit Antialias.
                          Beim GIF-Bild geht das einfach nicht
                          Das liegt NUR am GIF-Format, nicht an der GDlib von PHP.
                          Kompliziert ist es ja nicht, deswegen gibt es ja auch das PNG-Format, was auch eine Kombination von JPEG und GIF darstellt.

                          Kommentar


                          • #14
                            Ergo: Kack auf den IE.

                            Kommentar


                            • #15
                              jut... dann werde ick ma dat png versuchen und kieken ob et funktioniert. :P
                              mfg Alex

                              Kommentar

                              Lädt...
                              X