Ankündigung

Einklappen
Keine Ankündigung bisher.

Bild mit Imagemagick generieren?

Einklappen

Neue Werbung 2019

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

  • Bild mit Imagemagick generieren?

    Hallo,

    ich möchte gern ein Bild wie das folgende

    erstellen.

    Ich habe aber überhaupt keine Ahnung wie ich das anstelle . Mit Imagemagick bekomme ich das einfach nicht hin. Hat da vielleicht jemand erfahrung und kann mir witerhelfen? Vielleicht geht es ja auf einem anderen Weg einfacher?

    Vielen Dank

    Jürgen

  • #2
    Ich kenne zwar Image Magick nicht, aber im Prinzip wirds wohl darauf hinaus laufen, das Schwarz transparent zu machen bzw. mit dem gewünschten farbigen Hintergrund negativ zu multiplizieren.

    Du schreibst auch nichts über die Anwendung. Solche Hinweise würden weiterhelfen. Denn in einem Grafikprogramm ist das Problem ja flugs lösbar.
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Hallo,
      Zitat von nikosch77
      Du schreibst auch nichts über die Anwendung.
      also der Anwender soll später ein Kategoriebild hochladen und das Script soll daraus eben dynamisch so ein Bild generieren. Ich gebe dir Recht das es z.b. In Photoshop in 5 Minuten erledigt ist.

      Aber das ganze dynamisch zu machen stellt mich vor ein Problem.

      Jürgen

      Kommentar


      • #4
        das Schwarz transparent zu machen
        ... naja wenn die Augen beim Beispiel, oder später andere Teile des Bildes auch schwarz sind, verschwinden diese

        Irgendwie fehlen mir noch die genauen Vorstellungen darüber, wie das Bild am Ende aussehen soll.

        Kommentar


        • #5
          Hallo,

          einmal soll das linke Bild als Wasserzeichen im rechten erscheinen(ganz schwach) und einmal dann ganz normal in Farbe. Ich könnte es verschmerzen wenn man in diesem Beispiel die Augen nicht mehr sieht bzw. diese dann transparent wären.

          Kommentar


          • #6
            Das mit dem Wasserzeichen ist vielleicht möglich, aber den Hintergrund färben wird so ohne weiteres nicht gehen. Wie CIX88 schon gesagt hat wenn du einfach schwarz transparent machst werden alle linien etc. die schwarz sind auch transparent. Du müsstest also den Bereich des Bildes der (nicht) zum Hintergrund gehört definieren, aber wie soll das dynamisch gehen? Und die Hintergrundfarbe wird wohl auch nicht immer schwarz sein

            Kommentar


            • #7
              Hallo,

              also ich habe es nun so halbwegs hinbekommen. Ich habe mir die folgende Function gebastelt. Für den Moment bin ich damit zufrieden, jedoch muss ich das noch verbessern.


              PHP-Code:
              function generate_CatimageFX($pathTofile,$file,$catid){
                  
              $tmp_md5 md5($file);
                  
              //verkleiner das Bild auf maximal 400x400 pixel und konvertiere es nach PNG
                  
              exec("convert $pathTofile$file -resize 200x200 /tmp/{$tmp_md5}_resized.png");
                  
              // das weiss ich noch nicht genau was hier passiert
                  
              exec("convert /tmp/{$tmp_md5}_resized.png \( +clone -fx 'p{0,0}' \) -compose Difference  -composite  -modulate 75,0  +matte  /tmp/{$tmp_md5}_difference.png");
                  
              //erstellt die Maske
                  
              exec("convert /tmp/{$tmp_md5}_difference.png  -threshold 20%  /tmp/{$tmp_md5}_threshold_mask.png");
                  
              // stellt das Originalbild frei 
                  
              exec("convert /tmp/{$tmp_md5}_resized.png  /tmp/{$tmp_md5}_threshold_mask.png   +matte -compose CopyOpacity -composite  /tmp/{$tmp_md5}_threshold.png");
                  
              // vergrössert das spätere wasserzeichenbild
                  
              exec("convert /tmp/{$tmp_md5}_threshold.png  -resize 600x600 /tmp/{$tmp_md5}_threshold_big.png");
                  
              //erstelle das Ursprungs Hintergrundbild
                  
              exec("convert -size 365x196 xc:#F2F7FB  /tmp/{$tmp_md5}_background.png");
                  
              // kopiert das Wasserzeichenbild in das Hintergrundbild
                  
              exec("composite -watermark 5%  -geometry +70+5 /tmp/{$tmp_md5}_threshold_big.png /tmp/{$tmp_md5}_background.png  /tmp/{$tmp_md5}_wmark_watermark.png");
                  
              // erstell eine verlaufsüberlagerung
                  
              exec("convert -size 400x400 gradient:#F2F7FB-none -rotate -45 -gravity center -crop 365x196+0+0 +repage /tmp/{$tmp_md5}_gradient.png");
                  
              // legt einen Verlauf über das Hintergrundbild
                  
              exec("composite -watermark 10%  -geometry +0+0 /tmp/{$tmp_md5}_gradient.png /tmp/{$tmp_md5}_wmark_watermark.png /tmp/{$tmp_md5}_background2.png");
                  
              //verkleinert das Ursprungsbild
                  
              exec("convert /tmp/{$tmp_md5}_threshold.png  -resize 115x115  /tmp/{$tmp_md5}_threshold_klein.png");
                  
              // kopiert das Ursprungsbild auf das Hintergrundbild
                  
              exec("composite -quality  80% -geometry +230+36 /tmp/{$tmp_md5}_threshold_klein.png /tmp/{$tmp_md5}_background2.png /tmp/{$tmp_md5}_result.png");
                  
              // wandelt das Bild in ein Jpeg um
                  
              exec("convert /tmp/{$tmp_md5}_result.png -quality 80 /tmp/{$tmp_md5}_result.jpg");
                  
              //kopiert das File in den entsprechenden Ordner
                  
              copy('/tmp/'.$tmp_md5.'_result.jpg','/var/www/localhost/htdocs/images/categories/'.$catid.'/category_'.$file);
                  
                  
              // löscht alle temporären Dateien
                  
                  
              unlink('/tmp/'.$tmp_md5.'_resized.png');
                  
              unlink('/tmp/'.$tmp_md5.'_difference.png');
                  
              unlink('/tmp/'.$tmp_md5.'_threshold_mask.png');
                  
              unlink('/tmp/'.$tmp_md5.'_threshold.png');
                  
              unlink('/tmp/'.$tmp_md5.'_threshold_big.png');
                  
              unlink('/tmp/'.$tmp_md5.'_background.png');
                  
              unlink('/tmp/'.$tmp_md5.'_wmark_watermark.png');
                  
              unlink('/tmp/'.$tmp_md5.'_gradient.png');
                  
              unlink('/tmp/'.$tmp_md5.'_background2.png');
                  
              unlink('/tmp/'.$tmp_md5.'_threshold_klein.png');
                  
              unlink('/tmp/'.$tmp_md5.'_result.png');
                  
              unlink('/tmp/'.$tmp_md5.'_result.jpg');
                  
                  return 
              'category_'.$file;
                  

              Kommentar


              • #8
                Servus ... Die beste Seite für ImageMagick : http://www.imagemagick.org/Usage/

                Dort sind an sich alle Funktionen bzw. annähernd alle Funktionen aufgeschlüsselt und mit Beispielen versehen.

                Dein Beispiel könnte man ja in wenigen Schritten erreichen. ich glaube du machst da noch einige Umwege.

                Kommentar

                Lädt...
                X