Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit ImageCreateFromGif()

Einklappen

Neue Werbung 2019

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

  • Problem mit ImageCreateFromGif()

    Hallo,

    ich habe ein Problem mit ImageCreateFromGif(). Und zwar werden Bilder, die ich hochlade und dann mit der Funktion bearbeite fehlerhaft. Sie erhalten dann schwarze Pixelflächen, die ich nicht ganz deuten kann. Mit ImageCreateFromJpeg() oder ImageCreateFromPng() passiert mir das nicht. Nun habe ich gelesen, dass das ein bekanntes Problem sei und man diese Funktion nicht mehr benutzen solle. Aber welche benutzt man dann für Gif's ??? Ich finde keine Alternative... Habt Ihr eine ?

  • #2
    Re: Problem mit ImageCreateFromGif()

    Zitat von mhtu
    Und zwar werden Bilder, die ich hochlade und dann mit der Funktion bearbeite fehlerhaft.
    Mit welchen Funktionen bearbeitest du das Bild?

    Zitat von mhtu
    Nun habe ich gelesen, dass das ein bekanntes Problem sei und man diese Funktion nicht mehr benutzen solle.
    Wo hast du das gelesen?

    Kommentar


    • #3
      Mit welchen Funktionen bearbeitest du das Bild?
      Mit imagecreatetruecolor(), ImageCreateFromGif(), getimagesize(), imagecopyresized() und imagegif() !

      Wo hast du das gelesen?
      Ich finds nicht mehr, ist schon länger her, stoße auch immer wieder nur auf ImageCreateFromGif(), deswegen frage ich ja. Aber auf http://de3.php.net/imagecreatefromgif steht auch etwas, und zwar: "ACHTUNG: Ab Version 1.6 wurde die komplette GIF-Unterstützung aus der GD-Bibliothek entfernt. Diese Funktion ist also nur verfügbar, wenn Sie eine Version vor 1.6 verwenden. "

      Kommentar


      • #4
        Das selbe Problem hatte ich auch schon mal - komischerweiße nur bei transparenten Gif's - bei mir hat es geholfen bei transp. Gif's anstelle von imagecopyresampled() die Funktion imagecopyresizred() zu verwenden.

        Hast du es mal umgekehrt probiert mit imagecopyresampled() ?
        Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

        Kommentar


        • #5
          Ja, das könnte sein, dass es an den Transparenzbereichen liegt. Kommt hin. Habs gerade mal getestet. Mit der Funktion imagecopyresampled() muss ich mich erstmal beschäftigen, weiß gar nicht, was die macht und wie man die verwendet. Ich beles mich mal.

          Kommentar


          • #6
            Zitat von mhtu
            Ich finds nicht mehr, ist schon länger her, stoße auch immer wieder nur auf ImageCreateFromGif(), deswegen frage ich ja. Aber auf http://de3.php.net/imagecreatefromgif steht auch etwas, und zwar: "ACHTUNG: Ab Version 1.6 wurde die komplette GIF-Unterstützung aus der GD-Bibliothek entfernt. Diese Funktion ist also nur verfügbar, wenn Sie eine Version vor 1.6 verwenden. "
            Die richtige Version der GD-Bibliothek wird bei dir wohl installiert sein, da du sonst eine Fehlermeldung bekommen würdest, dass die Funktion imagecreatefromgif() nicht existiert. Nebenbei erwähnt ist seit GD 2.0.28 auch die GIF-Unterstützung wieder implementiert. Das ist anscheinend noch nicht in die deutsche Version der Dokumentation noch nicht aufgenommen worden.

            Zitat von mhtu
            Mit der Funktion imagecopyresampled() muss ich mich erstmal beschäftigen, weiß gar nicht, was die macht und wie man die verwendet.
            Wenn du eh schon imagecopyresized() verwendest, wird dir das vermutlich auch nicht weiterhelfen. Du könntest allerdings mal ausprobieren, was passiert, wenn du imagecreate() statt imagecreatetruecolor() verwendest.

            Kommentar


            • #7
              Jawoll ! Das wars ! An imagedcreatetruecolor() lags ! Ist ja auch logisch, denn GIF hat ja nur maximal 256 Farben. Also Leudde: bei GIF's nur imagecreate !!! Nur bei JPEG's und PNG's imagecreatetruecolor() ! Daaaanke !

              Kommentar


              • #8
                Stimmt aber ich glaube mich zu errinnern das bei mir das Problem erst behoben war als ich beide Funktionen (imagecreate u. imagecopyresized) verwendet hatte
                Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                Kommentar


                • #9
                  Zitat von HStev
                  Stimmt aber ich glaube mich zu errinnern das bei mir das Problem erst behoben war als ich beide Funktionen (imagecreate u. imagecopyresized) verwendet hatte
                  Wäre logisch, da imagecopyresized() sich beim Ändern der Bildgröße auf 256 Farben beschränkt.

                  Kommentar


                  • #10
                    Wäre logisch, da imagecopyresized() sich beim Ändern der Bildgröße auf 256 Farben beschränkt.
                    Wo steht das denn ?

                    Kommentar


                    • #11
                      Hab grad was dazu im Manual gefunden:

                      Anmerkung: There is a problem due to palette image limitations (255+1 colors). Resampling or filtering an image commonly needs more colors than 255, a kind of approximation is used to calculate the new resampled pixel and its color. With a palette image we try to allocate a new color, if that failed, we choose the closest (in theory) computed color. This is not always the closest visual color. That may produce a weird result, like blank (or visually blank) images. To skip this problem, please use a truecolor image as a destination image, such as one created by imagecreatetruecolor().
                      http://www.php.net/manual/de/functio...yresampled.php

                      Daraus könnte man das schlussfolgern was xabbuh gesagt hat, direkt gefunden hab ich es nicht.
                      Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                      Kommentar


                      • #12
                        Jo, der Knackpunkt liegt hier bei ImageCreateTrueColor(),

                        Da ich selber schon mehr als genug mit den Grafik-Funktion experimentiere, kan ich nicht wirklich ein Unterschied zwischen ImageCopyResized() und ImageCopyResampled() feststellen.
                        War vieleicht mal früher bzw. in älteren GDlib-Version

                        Zudem wäre es auch nicht nötig, z.B. ein GIF-Bild in ein JPEG-Bild umzuwandeln.
                        Wo nicht mehr als 256 Farben vorhanden sind, lassen sich auch nicht mehr rausholen.

                        Zum Thema ImageCreate() bzw. ImageCreateTrueColor() :
                        http://forum.developers-guide.net/sh...=1712#post1712

                        Kommentar


                        • #13
                          Zitat von CIX88
                          Wo steht das denn ?
                          Einen Beleg habe ich dafür leider nicht mehr gefunden. Allerdings wüsste ich nicht, warum man sonst die imagecopyresampled() einführen sollte.

                          Zitat von CIX88
                          Da ich selber schon mehr als genug mit den Grafik-Funktion experimentiere, kan ich nicht wirklich ein Unterschied zwischen ImageCopyResized() und ImageCopyResampled() feststellen.
                          War vieleicht mal früher bzw. in älteren GDlib-Version
                          Kann natürlich auch sein, dass es wirklich mit der GD-Version zusammenhängt.

                          Kommentar

                          Lädt...
                          X