#!/usr/bin/ruby -w # Encoding: UTF-8 # frozen_string_literal: true # =========================================================================== # # localhost/DATA/PROGRAMMING_LANGUAGES/RUBY/src/image_paradise/lib/image_paradise/www/imagemagick/imagemagick.cgi # =========================================================================== # require ‘cyberweb/autoinclude’
german { css_style :template1 favicon ‘PC/IMAGEMAGICK/IMAGEMAGICK_FAVICON.jpg’ body_css_class ‘s12px padt4px marpad2px VERDANAs’ body_css_style ‘background-color: d3d2d1;’ font_size ‘default’
YDOT = sg(:yel_dot,‘marr4px bblack1’) div(‘mart0px’) {
# ========================================================================= # # CONVERT TAG - ist bei Imagemagick dabei # ========================================================================= # div('FS1_1em pad1em mar2px bblack1','imagemagick','min-height:40em'){ CONVERT_CSS = 'BG_Black1 FW6 mars8px mediumseagreen s2px' h1 'ImageMagick / RImageMagick','GOTHIC martb1px s0_5em midnightblue FI','convert' h1 'Convert','FI firebrick FL120 marb0px mart1px wid92 s1em','CONVERT' br PARAGRAPH_BG_COLOUR+'border-left:2px solid darkblue;border-top:2px solid darkblue' e 'ist das wichtigste KonsolenTool bezüglich Grafik und Linux schlechthin. (<i> Aus Lizengründen konvertierte es früher "normalerweise" nicht nach .gif; mittlerweile hat ImageMagick jedoch kein Problem mehr mit .gif Dateien </i>)' br abr 'https://www.imagemagick.org/script/convert.php', content: 'Die API Dokumentation zu convert findet man hier.', css_class: 'BO mars2em slateblue' br e 'Für Optionen wie <b>-fill</b> kann man RGB angeben wie zum Beispiel <b>rgb(255,255,255)</b>.' br e 'Um zu sehen, was convert kann, muss man es ausprobieren.';br e 'Die <b>allgemeine Syntax</b> ist:' br e ' convert [ options ... ] input_file output_file ','s1em' br e 'Um eine jpg Datei in eine png Datei umzuwandeln nutzt man diese Syntax hier:' br e ' convert DnD.jpg DnD.png',CONVERT_CSS br e 'Convert kann auch mehrere Bilder in <b>pdf</b> verwandeln zum Beispiel:' br e ' convert '+INPUT_IMG+' y.jpg bla.pdf',CONVERT_CSS e ' convert *.jpg /Depot/PDF/bla.pdf',CONVERT_CSS e ' convert *.png /Depot/PDF/bla.pdf',CONVERT_CSS br e 'Folgende Anweisung verändert die Datei '+INPUT_IMG+' zu der kleineren .png Datei '+OUTPUT_IMG+' (width:100px, height: 75px):' br e ' convert '+INPUT_IMG+' -scale geometry 75 '+OUTPUT_IMG, 'FW6 s1em','',COL_1 br e 'Generell legt man die Grösse eines Bildes mittels -size w x height fest, zb -size 300x50' br e 'Bilder "addieren" kann man mittels <b>average</b>' e ' convert -average '+INPUT_IMG+' test.gif','FW6 s1em','',COL_1 e 'und folgendes' e ' convert -charcoal 3 '+INPUT_IMG+' '+OUTPUT_IMG,'FW6 s1em','',COL_1 e 'Führt einen <b>Kreide Effekt</b> ein.' br e 'Das Bild verliert fast alle Farben, und schaut wie eine Zeichnung aus - siehe das Bild zur rechten Seite, wobei der Effekt generell ziemlich stark ist.' img 'DESIGNING/CHARCOAL.jpg','FLR bblack2 marb4px mars1em', 'drag_CharcoalMod' br e 'Je höher der Wert bei charcoal ist, um so mehr charcoal (<b>Holzkohle</b>) wird verwendet, das Bild wird also immer dünkler.' br e 'Noch ein charcoal Beispiel, dieses Mal ein reales Bild von einigen Pflanzen, die ausserhalb meiner Wohnung wachsen.' br img 'HOME/28_APR_05_RegnetSonnenschein_charcoaled.jpg', 'FLR bblack2 marb4px marr1em','drag_charcoal' # ==================================================================== # # ROT GRÜN BLAU # ==================================================================== # div('CR TAJ VAR wid85 mars2px bblack2 mart2em pad4px s8px', 'background-color:#ffcb63'){ e 'Um Werte für ' s 'b','Rot ','Red bold' s 'b','Grün ','DGreen' e 'und ' s 'b','Blau ','Blue' ebr ' festzulegen:' e '10/20/30 heisst Rot = 10, Green = 20 Blau = 30. Erlaubt sind auch Prozentangaben (10%).' } br e 'Eine weitere nützliche Funktion von convert ist die option <b>-colorize</b>. Dabei wird die Farbe jedes Pixel mit einer angegeben Farbe vermischt.' e ' convert -colorize 255 input.jpg output.jpg',CONVERT_CSS br e 'Erneut ein Beispiel mit colorize, aber dieses mal nutzen wir die R,G,B Angabe:' e ' convert -colorize 2,15,75 '+IMG1+' output.jpg',CONVERT_CSS br e 'Mittels der <b>Implode</b> Option scheint das Zentrum des Bildes in ein schwarzes Loch gesaugt zu werden. Je höher, umso grösser ist der Effekt, wobei meiner Meinung nach ein Wert grösser 1 zu schlechten Ergebnissen führt: ' e ' convert -implode 1 '+INPUT_IMG+' '+OUTPUT_IMG,CONVERT_CSS e 'Folgendes Bild zeigt das Zentrum einer Implosion, man kann sehen, das alle Farblinien zu diesem Zentrum hinströmen.' img 'PC/IMAGEMAGICK/IMPLODE.png','bblack1 marb3px marr1em'; br e '<b>solarizing</b> findet statt, wenn ein <b>Bild-Negativ</b> dem Licht während der Entwicklungsphase ausgesetzt ist. (Jaja, alte Zeiten, heute funzt das mit Digitalkameras). Das Eingabe Argument zeigt die Intensität an. Über diesen Wert hinaus wird Solarize angewandt, entweder absolut wert oder in Prozenten angegeben.';br e 'Um ein <b>animiertes Bild</b> zu machen, kann man dies hier nutzen:' e ' convert -loop 0 -delay 410 '+INPUT_IMG1+' '+INPUT_IMG2+' /Depot/X.gif',CONVERT_CSS e ' convert -solarize 88 '+INPUT_IMG+' X.png',CONVERT_CSS br e 'Bilder verknüpfen geht zb so:' convert_css ' convert +adjoin a.jpg b.jpg ab.jpg' e '<b>spread</b> bewegt Pixel im Bild <b>zufällig</b>. Das Argument ist der Radius UM ein Pixel, das verändert werden soll, von dem ausgehend der nächste "Spread" erfolgt. Mit anderen Worten, das Argument legt fest, wie sehr das Zielbild dem Ursprungsbild ähnelt. Gibt man zb 10 an, dann sind um Pixel X genau 10 Pixel so wie im Originalbild, bevor erneut ein Pixel X ausgetauscht wird.' # spread convert_css ' convert -spread 44 '+INPUT_IMG+' X.png' e 'Meiner Meinung nach ist spread eher unnütz.' ebr 'Diese Optionen kann man übrigens zu einer Kette verknüpfen: ' convert_css ' convert -sample 25%x25% -spread 4 -charcoal 4 '+INPUT_IMG+' '+OUTPUT_IMG anmerkung 'Zur Option -sample siehe diese Webseite:' br abr 'http://www.imagemagick.org/Usage/resize/#sample', content: 'DEF' ebr 'Um <b>thumbnails</b> zu erstellen, bzw die <b>Grösse zu ändern</b>, funktioniert folgendes (das ist auch als cropping bekannt):' br convert_css ' convert -size 120x120 '+INPUT_IMG+" -resize 120x120 +profile '*' thumbnail.jpg " convert_css ' convert '+INPUT_IMG+" -resize 50% '*' thumbnail.jpg " convert_css ' convert SELINA_PERES.jpg -sample 25%x25% foo.jpg' e 'Soweit mir bekannt kann man -size weglassen, und einfach nur -resize verwenden. Dann verkürzt sich das ganze zu:' convert_css " convert -resize 75x75 "+INPUT_IMG+' '+OUTPUT_IMG e 'Per default hält sich convert an die Image Grösse, mittels ! kann man dies overrulen und explizit bestimmen, das ein Image auf ein bestimmte Grösse resized werden soll:' convert_css " convert -resize 75x75! "+INPUT_IMG+" "+OUTPUT_IMG e 'Mittels folgendem Ruby script wandelt man alle Bilddateien um' convert_css 'x.each {|tmp| system("convert -resize 115x115! " + tmp +" "+ "OFF_"+tmp )}' br ebr 'Etwas <b>eleganter</b> geht das <b>Resizen</b> auch über Prozentangaben (zumindest eleganter für Thumbnails):' convert_css ' convert -sample 25%x25% '+INPUT_IMG+' out.jpg' ebr 'Und um alle images im aktuellen Directory zu thumbnailen: ' convert_css 'for img in `ls *.jpg`' convert_css ' do ' convert_css 'convert -sample 25%x25% IMG thumb-IMG' convert_css 'done' ebr 'Man kann die Bilder auch rotieren lassen wie zB: ' convert_css ' convert -rotate 90 input.jpg output.jpg' e 'Mittels <b>-pointsize</b> kann man die Grösse des Pinsels bestimmen.' ebr 'Oben hast du das convert command kennengelernt.' ebr 'Ein weiteres sehr wichtiges command ist identify, mittels dessen Hilfe man Grafik Dateien analysieren kann: ' convert_css 'identify foo.bmp' e 'Wie finde ich schnell heraus, wie gross eine .jpg Datei ist? Genau wie oben auch. (img size, image size)' br convert_css 'identify '+INPUT_IMG br ebr 'convert führt umfangreiche Konversionen durch, Format, Grösse, Auflösung, animierte GIFs, frames, und anderes. Wichtig ist delay:' e 'delay 1x/100ths einer Sekunde, zeigt das nächste Image nach einer Pause an. Delay 100 ist somit genau 1 Sekunde. Hier ein Beispiel:' convert_css 'convert -delay 100 '+INPUT_IMG+' y.png z.gif <span class="Gold"># -> To gif</span>' e 'Sehr nett ist die Option, bestimmte Teile eines Bildes transparent zu machen:' convert_css 'convert -transparent white '+INPUT_IMG+' '+OIMG s2 '* composite:',CONVERT_CSS e 'damit können wir den Blend Modus einstellen (Plus, Minus, Over, Add, Subtract, Multiply ). ' e '* display: displays the images individually or as thumbnails. ' s2 "display 'vid:*.png' ",CONVERT_CSS ebr '# generate thumbnails of all PNG images' s2 '* identify:',CONVERT_CSS e 'displays information of format, size, etc. and the number of seconds it took to read and process the image. Sehr nützlich. ' e 'import: screen capture, that way we can show the final result to our readers :)' ebr 'Nun ein Beispiel mit composite, um dem Originalbild ein neues Bild hinzuzufügen. ' e 'composite -gravity center -compose Copy new_fog.png canvas.png comp_new_fog.png',CONVERT_CSS e 'Was wirklich geil ist, ist die Möglichkeit, das man Bilder erstellt mit Schriften drauf, ohne je Gimp starten zu müssen.' e 'Da ich immer Probleme mit passender Schrift hatte, hier eine Liste mit funzenden Fonts:' e 'Bookman-DemiItalic, Courier, LucidaTypewriter, ' e 'Hier ein paar Beispiele:' convert_css "convert -size 320x85 xc:transparent -font Bookman-DemiItalic -pointsize 72 -draw \"text 25,60 'Magick'\" -channel RGBA -gaussian 0x6 -fill darkred -stroke magenta -draw \"text 20,55 'Magick'\" /Depot/bla.png" convert_css "convert -size 300x85 xc:transparent -font Nimbus-Roman -pointsize 88 -draw \"text 25,60 'Sarlem'\" -channel RGBA -gaussian 0x6 -fill \"rgb(25,53,145)\" -stroke \"rgb(25,33,45)\" -draw \"text 20,55 'Sarlem'\" /Depot/bla.png" e "convert -size 340x165 xc:transparent -font Bookman-DemiItalic -pointsize 32 -draw \"text 18,20 'Goldene Tafel'\" -channel RGBA -gaussian 0x5 -fill \"rgb(254,153,1)\" -stroke \"rgb(55,33,45)\" -draw \"text 12,25 'Goldene Tafel'\" /Depot/bla.png",CONVERT_CSS e 'Grafiken kann man auch verkleinern.' e 'Das ist hilfreich um zb einen kleinen Abschnitt auszuwählen.' e 'Die Option Crop ermöglicht dies. Beispiel:' convert_css ' convert rose: -crop 40x30+90+60 SARLEMKARTE.jpg' div { h2 'RMagick' p { e 'Die Ruby Implementation zu ImageMagick heisst RMagick.' s2 'Die wird an anderer Stelle erläutert und zwar ' a 'rmagick', content: 'hier', css_class: 'BO' } div('s1em'){ abr 'http://raa.ruby-lang.org/project/rmagick/', content: YDOT+'RMagick', css_class: 'darkblue BO mars1em' abr 'http://www.cit.gu.edu.au/~anthony/graphics/imagick6/crop/', content: YDOT+'Crop Aktion', css_class: 'darkblue BO mars1em' } } } div { h2 'jp2a' e 'Erstellt aus .jpg Dateien, ASCII. Hier einige Beispiele, zb auf der Konsole ausprobieren:' br cmd 'convert http://www.google.com/intl/en/images/logo.gif jpg:- | jp2a -' cmd 'convert http://tit4n.free.fr/images/boogibabes/bb_04_002.jpg jpg:- | jp2a -' cmd 'convert RPG/ADOPTION/HORSE.png jpg:- | jp2a --width=76 -' cmd 'convert RPG/ADOPTION/HORSE.png jpg:- | jp2a -' } div { h2 'ImageMagick Links' p('s1em') { abr 'https://www.imagemagick.org/Usage/color_mods/', content: :self } }
}}