Vollständige Version anzeigen : [Script-Fu] Ascii Anwenden
eleanora
19.07.2005, 20:13
Hallo
Ich hab das Ascii Script mal ausprobiert. Aber irgendwie mach ich wohl was falsch :(
Ich hab das Script auf einen Braunbären angewandt.
1112
Das sieht nicht aus, wie das schicke Kamel :(
Wenn ich das Script starte, kann ich eine Farbe auswählen, und in der Farbe erscheint dann der Hintergrund. Aber Transparent geht irgendwie nicht. Was mach ich nur falsch ?
Gruß Ele
klaus_harrer
20.07.2005, 10:06
Hallo eleanora
Hier ist der Autor des Scriptes.
Hab leider dein Problem nicht ganz verstanden.
Vieleicht kann ich das Script ein wenig modifizieren.
MfG
Klaus
eleanora
20.07.2005, 10:31
Hallo
ich habe ein Bild genommen
1126
es in RGB umgewandelt und dann das Script von dir drauf angewendet, diesmal mit der Farbe Weiß (beim ersten Beispiel hatte ich Braun genommen).
Das kam dabei heraus
1125
Wenn ich mir dein Kamel anschaue, sieht das anders aus. Irgendwie sieht man bei mir von dem Bären nix mehr.
So wie ich das sehe, sind bei deinem Bild die Zahlen Transparent und der Hintergrund ist Weiß. Bei mir sieht es so aus, als ob eine weiße Ebene über den Bären gelegt wurde.
Gruß Ele
klaus_harrer
20.07.2005, 10:44
Hallo eleanora
Habe noch einen Termin.
Werde mich nachher darum kümmern.
MfG
Klaus
eleanora
20.07.2005, 10:52
nu hab ich entweder Gimp oder das Script gekilled :(
1127
und ich wollte nur die Schriftgröße und den Abstand ändern :cry:
Gruß Ele
nu hab ich entweder Gimp oder das Script gekilled :(
1127
und ich wollte nur die Schriftgröße und den Abstand ändern :cry:
Gruß Ele
kommt bei mir immer :)
klaus_harrer
20.07.2005, 16:09
Hallo
Hab an das Script kleinere Änderungen vorgenommen.
(define (script-fu-ascii-artIII inImage inDrawable inString inColor inFont inFontsize inSpacing inProgress)
(define (fill-vertical)
(set! count 0)
(while (< start_x width)
(set! x (rand (string-length inString)))
(set! char (substring inString x (+ x 1)))
(gimp-text-fontname inImage -1 start_x start_y char 1 0 inFontsize 0 inFont)
(set! active-layer (car (gimp-image-get-active-layer inImage)))
(set! start_x (+ start_x (car(gimp-drawable-width active-layer))))
(if (= count 1)
(gimp-image-merge-down inImage active-layer 0)
)
(set! count 1)
)
)
(set! sel FALSE)
(let*(
(count1 0)
(count2 0)
)
(set! start_x 0)
(set! start_y 0)
(gimp-context-set-foreground inColor)
(if (= (car(gimp-selection-is-empty inImage)) FALSE)
(begin
(set! sel-path(car (plug-in-sel2path 0 inImage inDrawable)))
(set! sel TRUE)
)
)
(set! active-layer (car (gimp-image-get-active-layer inImage)))
(set! width (car (gimp-drawable-width active-layer)))
(set! height (car (gimp-drawable-height active-layer)))
(set! ascii-layer (car (gimp-layer-new inImage width height 1 "ascii-layer" 100 NORMAL-MODE)))
(set! tmp-layer (car (gimp-layer-new inImage width height 1 "tmp-layer" 100 NORMAL-MODE)))
(gimp-image-add-layer inImage ascii-layer -1)
(gimp-image-add-layer inImage tmp-layer -1)
(gimp-drawable-fill ascii-layer 0)
(gimp-drawable-fill tmp-layer 3)
(set! mask (car (gimp-layer-create-mask ascii-layer 0)))
(gimp-layer-add-mask ascii-layer mask)
(gimp-context-set-foreground '(0 0 0))
(while (<= start_y height)
(fill-vertical)
(set! active-layer (car (gimp-image-get-active-layer inImage)))
(set! m-float (car (gimp-selection-layer-alpha active-layer)))
(set! y-axle (caddr(gimp-selection-bounds inImage)))
(gimp-selection-none inImage)
(set! start_x 0)
(set! active-layer (car (gimp-image-get-active-layer inImage)))
(set! start_y (+ (- (+ start_y (car(gimp-drawable-height active-layer))) (* (- y-axle start_y) 2)) inSpacing))
(if (= inProgress TRUE)
(begin
(gimp-message-set-handler 1)
(if (< (/ (* 100 start_y) height) 100)
(gimp-message (string-append (number->string (/ (* 100 start_y) height)) "%"))
(gimp-message "100%"))))
(set! count1 (+ count1 1))
)
(while(> count1 count2)
(gimp-image-merge-down inImage active-layer 0)
(set! active-layer (car (gimp-image-get-active-layer inImage)))
(set! count2 (+ count2 1))
)
(gimp-edit-copy active-layer)
(set! floating-sel (car (gimp-edit-paste mask 0)))
(gimp-floating-sel-anchor floating-sel)
(set! active-layer1 (car (gimp-image-set-active-layer inImage active-layer)))
(gimp-image-remove-layer inImage active-layer)
(set! active-layer (car (gimp-image-get-active-layer inImage)))
(gimp-image-merge-down inImage active-layer 0)
(if (= sel TRUE)
(begin
(gimp-context-set-foreground inColor)
(gimp-path-to-selection inImage (car(gimp-path-get-current inImage)) 0 0 0 0 0)
(gimp-path-delete inImage (car(gimp-path-get-current inImage)))
(gimp-selection-invert inImage)
(gimp-edit-fill(car(gimp-image-get-active-drawable inImage)) 0)
(gimp-selection-none inImage)
)
)
)
(gimp-displays-flush)
)
(script-fu-register
"script-fu-ascii-artIII"
"<Image>/Script-Fu/ascii-artIII"
"Careful, when the Image large and the Fontsize small is. Then need the Script a long Time."
"Klaus Harrer"
"copyright 2005, Klaus Harrer"
"21/02/2005"
"*"
SF-IMAGE "IMAGE" 0
SF-DRAWABLE "DRAWABLE" 0
SF-STRING "Text" "01"
SF-COLOR "Color" '(0 0 0)
SF-FONT "Font" "Arial"
SF-ADJUSTMENT "Size" '(8 1 1000 0.5 0.5 1 1)
SF-ADJUSTMENT "Vertical Spacing" '(0 0 1000 0.5 0.5 1 1)
SF-TOGGLE "Display progress in percent in console" TRUE
)
Vieleicht kann mir ein Windows User mal eine info geben ob der Fortschritt in Prozent auf der Konsole zurückgegeben wird.
PS: Es ist nicht möglich indizierten Bilder mit diesen Script zu bearbeiten.
MfG
Klaus
eleanora
20.07.2005, 16:34
ich weiß nicht warum, aber Gimp erkennt das Script nicht mehr :(
In Windows dauerte der Durchlauf sehr lange (ca. 10 Min bei 768 MB und 2 GHz Prozessor) ist das normal ?
Gruß Eleanora ;)
klaus_harrer
20.07.2005, 17:36
Hallo
ich weiß nicht warum, aber Gimp erkennt das Script nicht mehr
Was genau meinst du damit.
In Windows dauerte der Durchlauf sehr lange (ca. 10 Min bei 768 MB und 2 GHz Prozessor) ist das normal ?
Es kommt darauf an wie groß dein Bild ist b.z.w wie klein deine Schriftgröße eingestellt ist.
MfG
Klaus
eleanora
20.07.2005, 17:43
Das Script erscheint nicht mehr im Script-Fu Auswahlmenü also kann ich es nicht mehr aufrufen
Das hat bei dem Bären so lange gedauert. Der Screenshot ist ein 100% Abbildung. Das Bild war also nicht so riesig groß.
Gruß Eleanora ;)
Hi,
habe das Script mit xp u. gimp 2.2.8 ausprobiert und funktioniert.
Der Fortschrittbalken ist nicht zu sehen.
habe auch so ein script programmiert!
allerdings komm ich mit scheme nicht zurrecht, deshalb hab ichs in php programmiert!
hier der link: http://nicky.eaglescripts.de/bild/!
gibt aber kein bild aus sondern nur ein string (zeichenkette)!
eleanora
08.08.2005, 15:47
Der is ja klasse :)
kann man das auch in Gimp einbauen ? Oder geht das nur online? Ich hab keine Ahnung von PHP
Gruß Eleanora ;)
nee kann man leider nicht in gimp einbauen.
aber ich hab mal gehört dass man auch mit python scripts erstellen kann, stimmt das?
braucht man dafür ein plugin?
ich kann zwar kein python, aber is glaub ich so ähnlich wie php. scheme find ich blöd, so die syntax...voll schrecklich.
//EDIT: oder war das garnicht python sonder perl??? :-\
python geht. derzeit allerdings nur für linux. gimp mit python für windows kommt frühstens mit version 2.4
hm, perl könnte auch sein. bin da aber sicher nicht der experte für. warten wir mal auf andere antworten ^^
Die meisten Linuxer haben PHP standardmässig installiert in Kombination mit oder ohne Python Python ergeben sich dann mehrere Lösungsmöglichkeiten:
1.) man macht alles in Python
2.) man macht nur ein Python Frontend und nutzt das PHP Script.
3.) man nimmt gleich das PHP Script.
Würde das PHP Script nicht auch von der Kommandozeile aus laufen?
Hans
Würde das PHP Script nicht auch von der Kommandozeile aus laufen?
hmm...kA, man müsste halt php installiert haben. ich hab nen localhost (xampp) mit dem ich meine hp teste bevor ich sie hochlade. kA ob das was bringt. kenn mich da auch nicht so gut aus, kanns nur programmiern.
und zurück zu python (,oder perl????):
python geht also (noch) nicht auf windows?!
und perl? wenn ja welche plugins (oder was auch immer) brauch ich dafür??
und noch ne frage:
lohnt sich der umstieg zu linux? klingt eigentlich ganz gut, aber zocken kann man damit nicht oder?
und noch ne frage:
lohnt sich der umstieg zu linux? klingt eigentlich ganz gut, aber zocken kann man damit nicht oder?
dafür ist ja egientlich eher dieser thread gedacht: http://gimpforum.de/ftopic1763.html
Ob der Umsteig sich letztendlich lohnt ist wohl für jeden selbst zu entscheiden.
Spielen kann man aber schon einiges. Entweder nativ, wenn der Hersteller mitspielt oder mit Cedega (www.transgaming.com), was aber ein bisschen was kostet oder man wartet noch ein wenig, denn das normale Wine (www.winehq.org) entwickelt sich derzeit auch sehr stark was DirectX Kompatiblität angeht. Und das ist (im Gegensatz zu Cedega) erstens kostenlos und wird zweitens nicht auf einzelne Spiele optimiert, sondern allgemein programmiert (Stichwort DX to OpenGL Wrapper).
Schau dich am besten einfach auch mal auf www.ubuntu-de.org oder linuxforen.de oder was es sonst noch so gibt in den entsprechenden Foren um. Gibt auch noch extra Linux-Spiele-Seiten, aber außer Holarse.de fällt mir da grad nix ein.
lohnt sich der umstieg zu linux? klingt eigentlich ganz gut, aber zocken kann man damit nicht oder?
Frag mich das nicht, denn meine Antwort steht fest. Gibt genügend Posts hier.
Was das zocken unter Linux angeht, gibt es bei http://www.holarse.de/ eine recht umfangreiche Übersicht.
Würde das PHP Script nicht auch von der Kommandozeile aus laufen?
Tut es, einfach `php skriptname.php` .. Nur das mit den Parametern verhällt sich etwas anders. Wie du auf die Parameter zugreifen kannst wird unter http://php-faq.de/q/q-php-shell.html erklärt.
Jetzt fehlt nur noch, dass N!cKY das Script postet.
sorry, hier das script:
<?php
if(isset($_FILES['bild']) && $_FILES['bild']['error'] == 0)
{
echo '<body style="backgroundcolor:'.$_POST['bgcolor'].'";>';
if($_POST['good'])
echo '<span style="font-family: 04b_25, Arial Unicode MS, Courier New, sans-serif; font-size: 1px; letter-spacing: 0px; line-height: 1px">';
else
echo '<span style="font-family: 04b_25, Arial Unicode MS, Courier New, sans-serif; font-size: 10px; letter-spacing: 0px; line-height: 10px;">';
switch($_POST['charset']) {
case 'num': $charsetFrom = ord('0'); $charsetTo = ord('9'); break;
case 'at': $charsetFrom = ord('@'); $charsetTo = ord('@'); break;
case 'onezero': $charsetFrom = ord('0'); $charsetTo = ord('1'); break;
}
move_uploaded_file($_FILES['bild']['tmp_name'], './imgData');
$mImgSrc = file_get_contents('./imgData');
unlink('./imgData');
$mImgObj = imagecreatefromstring($mImgSrc);
if(!$mImgObj)
die('Invalid image');
$imgX = imagesx($mImgObj);
$imgY = imagesy($mImgObj);
$maxSize = ($_POST['maxsize'])
if($imgX > $maxSize) {
$imgY = ($maxSize / $imgX * $imgY);
$imgX = $maxSize;
}
if($imgY > $maxSize) {
$imgX = ($maxSize / $imgY * $imgX);
$imgY = $maxSize;
}
imagecopyresampled($mImgObj, $mImgObj, 0, 0, 0, 0, $imgX, $imgY, imagesx($mImgObj), imagesy($mImgObj));
for($y=0; $y<$imgY; $y++) {
for($x=0; $x<$imgX; $x++) {
$mCol = imagecolorat($mImgObj, $x, $y);
$rCol = imagecolorsforindex($mImgObj, $mCol);
imagecolordeallocate($mImgObj, $mCol);
$hCol = sprintf('#%02x%02x%02x', $rCol['red'], $rCol['green'], $rCol['blue']);
if($_POST['good'])
echo '<font color="'.$hCol.'">0</font>';
else
echo '<font color="'.$hCol.'">'.chr(rand($charsetFrom, $charsetTo)).'</font>';
}
echo '
';
flush();
}
echo '</span></body>';
die();
}
?>
<form enctype="multipart/form-data" method="post" action="<?=$_SERVER['REQUEST_URI']?>">
<input type="file" name="bild" />
<input type="text" name="maxsize" value="50" /> Maximale Größe des Bildes (Empfohlen: 300 für Gute Qualität, sonst 50)
<select name="bgcolor">
<option value="#ffffff">Weiß</option>
<option value="#000000">Schwarz</option>
</select> Hintergrundfarbe
<select name="charset">
<option value="at">@ Zeichen</option>
<option value="num">Zahlen</option>
<option value="onezero">1 und 0</option>
</select> Zeichensatz
<input type="checkbox" name="good" value="1" /> Pixelgröße 1zu1 übernehmen
<input type="submit" />
</form>
oder hier http://nopaste.php-q.net/152845 mit highlight!
vBulletin® v3.8.2, Copyright ©2000-2013, Jelsoft Enterprises Ltd.