PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bilder in MSN nachmalen



Maurice
02.07.2009, 20:28
Hi, ich habe ein Programm gemacht was Sachen vom Bildschirm abliest und diese dann in MSN nachmalt.
Farben konvertiert er zu Greyscale und malt diese dann im Schachbrettformat.

1.0 Bild:
http://filesmelt.com/Imagehosting/pics/060e5b059d55cd045ce9ada9f204d8e3.png
1.2 Bilder:
http://filesmelt.com/Imagehosting/pics/73eb3c04172a91e62735d368a48a9d62.pnghttp://filesmelt.com/Imagehosting/pics/f2ee85f0aaafa6f97c976af499b50650.png

Download (1.2):
http://filesmelt.com/Filehosting2/downloader.php?file=Maurice_Image_draw_1_2.rar

Ihr müsst dem billigem GUI folgen, dann sollte es schon klappen. Das Bild dürft ihr bis zum 4. Schritt nicht verdecken. Er liest es nach dem 3. Schritt ab.
Wenn das Bild zu hell oder zu dunkel wird, müsst ihr im 3. Schritt 50 oder -50, oder mehr hinschreiben.

!Wenn ihr Aero habt, (Durchsichtige Fenster) solltet ihr diese ausschalten! Das Programm wird sonst 100x langsamer!

Sobald der Cursor sich nicht mehr bewegt, auch wenn MSN noch malt (scheiß MSN) könnt ihr was anderes machen.
Um große Bilder zu verschicken braucht ihr msn 8.5 oder weniger. (Dazu ein Tip: Wenn es updaten will, stellt ihr es auf Windows 2000 Compatibility)
Natürlich klappt das Programm auch mit allen anderen Programmen.

Sollte das Programm durchdrehen könnt ihr es mit "PAUSE" abbrechen.
Es funktioniert am besten mit Graustufen Bilder.

Hier ist ein schönes Bild zum ausprobieren:
http://tbn0.google.com/images?q=tbn:0ilQN3idjuR1ZM:http://www.rebekahlynn.com/free/tutorial/horseheadshade.jpg

Das Programm ist in einer billigen Scriptsprache namens "AutoIt3 (http://www.autoitscript.com/autoit3/)" geschrieben, wer die exe nicht mag weil ich ja nichts besseres zu tun habe als Keylogger zu verbreiten, ist hier die source:


#include "math.au3"

hotkeyset( "{PAUSE}", "meep")

dim $greyscale [4]
dim $topleftX
dim $topleftY
dim $bottomrightX
dim $bottomrightY
dim $abstand
dim $startX
dim $startY
dim $modifier
dim $pixel
dim $count = 1

;$contrast = 50

func meep()
Exit
EndFunc

func start()

$exit = msgbox (1, "(1 of 5) Top Left", "Have this window focused, then put your mouse on the top left of your image and hit enter.")
if $exit = 2 then exit
$dummy = mousegetpos()
$topleftX = $dummy[0]
$topleftY = $dummy[1]

$exit = msgbox (1, "(2 of 5) Bottom Right", "Nice one. Now put it on the bottom right corner.")
if $exit = 2 then exit
$dummy = mousegetpos()
$bottomrightX = $dummy[0]
$bottomrightY = $dummy[1]

$modifier = InputBox( "(3 of 5) Modifier", "Add how much darkness? -255 to 255. If you don't know leave it at 0.(Short wait after this window, image being processed!)", "0")
if @error = 1 then exit

new1()
endfunc

func new1()

dim $pixel [3000][3000]
for $y = $topleftY to $bottomrightY
for $x = $topleftX to $bottomrightX

$greyscale[0] = PixelGetColor($x, $y)
$greyscale[1] = 0.299 * BitAND(BitShift($greyscale[0], 16), 255)
$greyscale[2] = 0.587 * BitAND(BitShift($greyscale[0], 8), 255)
$greyscale[3] = 0.114 * BitAND($greyscale[0], 255)
$greyscale[0] = ($greyscale[1] + $greyscale[2] + $greyscale[3])

$pixel[$x][$y] = $greyscale[0] - $modifier
if $pixel[$x][$y] > 255 then $pixel[$x][$y] = 255
if $pixel[$x][$y] < 0 then $pixel[$x][$y] = 0

if $greyscale[0] > 245 then $pixel[$x][$y] = 255
next

next


for $y = $topleftY to $bottomrightY
for $x = $topleftX to $bottomrightX

$oldpixel = $pixel[$x][$y]
$newpixel = round($oldpixel / 255) * 255
$pixel[$x][$y] = $newpixel
$quant_error = $oldpixel - $newpixel
$pixel[$x+1][$y] = $pixel[$x+1][$y] + 7/16 * $quant_error
$pixel[$x-1][$y+1] = $pixel[$x-1][$y+1] + 3/16 * $quant_error
$pixel[$x][$y+1] = $pixel[$x][$y+1] + 5/16 * $quant_error
$pixel[$x+1][$y+1] = $pixel[$x+1][$y+1] + 1/16 * $quant_error
next
next

intermission()
endfunc

;func changecontrast()
;for $y = $topleftY to $bottomrightY
; for $x = $topleftX to $bottomrightX
; if $pixel[$x][$y] < 127.5 then
; $pixel[$x][$y] += $pixel[$x][$y] * (($contrast / 100 + 1) * (255 / (255 - $pixel[$x][$y]) + 1))
; else
; $pixel[$x][$y] += $pixel[$x][$y] * (1 - ($contrast / 100)) * (255 / (255 - $pixel[$x][$y]))
; endif
; next
;next
;endfunc

func intermission()

$abstand = InputBox( "(4 of 5) Space", "(The image is not needed from now on) The space between each pixel. Leave at 0 if you don't know.", "0")
if @error = 1 then exit

$exit = msgbox ( 1, "(5 of 5) Start", "Now put your mouse where you want the top left corner to be. Make sure there's enough space. A second after you hit OK the image will be drawn.")
if $exit = 2 then exit
$dummy = mousegetpos()
$StartX = $dummy[0]
$StartY = $dummy[1]

sleep(500)
Mousemove( $StartX + (($bottomrightX - $topleftX) * ($abstand + 1)) + 1, $StartY - 1, 0)
mousedown( "left")
mouseup( "left")
sleep(500)
new2()
endfunc

func new2()


for $y = $topleftY to $bottomrightY
for $x = $topleftX to $bottomrightX

if $pixel[$x][$y] = 0 Then
Mousemove( $StartX + ($abstand + 1) * ($x - $topleftX) , $startY + ($abstand + 1) * ($y - $topleftY), 0)
for $c = 1 to $count
mousedown( "left")
mouseup( "left")
next
endif
next
next
$restart = msgbox( 1, "Again", "Rerun the program?")
if $restart = 1 then start()
endfunc
start()

zocker113
02.07.2009, 20:31
Dude.....awesome!
Was für ein Abstand ist bei 3 gemeint?

Maurice
02.07.2009, 20:49
Abstand von 1 sind die Pixel direkt nebeneinander.
Wenn du zB nen kleines Bild hast es aber größer willst, nimmste bei MSN den mittelgroßen Punkt und nimmst Abstand von 4 oder 5.

zocker113
02.07.2009, 20:50
Tihihihi jetzt werd ich alle mit Bildern vollspammen!

Maurice
02.07.2009, 20:56
http://filesmelt.com/Imagehosting/pics/64e3af043f01db7a58c80702bbbfa7eb.png

Wenn wer weiß wie ich bei niedrigen Grauwerten es hinkriege, dass der statt den wenigen diagonalen Linien richtig Schachbrettet, soll ers mir sagen.

http://filesmelt.com/Imagehosting/pics/dc7f5dc0b3da41f70081dab867258772.png

(5 pixel abstand, +100 dunkel)

zocker113
02.07.2009, 21:22
Bei Mays rastet er aus D:

Maurice
02.07.2009, 21:32
Ist das Paint?
Mit Paint hatte ich probleme dass Paint nachhängt und dann der die Maustaste nicht wieder loslässt.

zocker113
02.07.2009, 21:33
It was http://garyc.me/sketch/sketch.swf

Verträgt sich nicht^^ mehr als 68% ink = kackt ab.

Pij
02.07.2009, 22:13
Bei mir wechselt es nur wie wild zwischen allen möglichen offenen Fenstern her, oder öffnet 10-20 zusätzliche Programme aus der Schnellstartleiste :(
Ich öffne das Bild mit Irfanview (120*120 weißes Viereck mit Bild drauf) und dann halt ich die Maus oben links ins MSN Malfenster.

Bei Andreys Avatar + Paint das gleiche.

Maurice
02.07.2009, 22:18
Zuerst die maus oben links, dann unten rechts, dann enter, dann nochmal, dann erst die maus ins MSN malfenster.
Und stell sicher dass das Irfanview Bild nicht verdeckt wird (vom MSN fenster zum beispiel).

Pij
02.07.2009, 22:21
Hab ich ja gemacht :(

Hab die Maus im MSN Fenster gehabt und dann auch mit Enter bestätig und auch mal draufgeklickt und dann erst in's MSN Fenster gegangen.

Muss die PixelAngabe eigentlich pixelgenau sein?
Es ist doch die anzahl der Pixel zwischen den beiden X-Koordinaten der oberen linken und unteren rechten Ecke oder?


awz lol, vergiss es.
Hab da immer 99 bzw. 120 reingeschrieben.

Maurice
02.07.2009, 22:23
Vielleicht haste das falsch verstanden.
Beim ersten Popup musst du die maus Oben Links auf dem Bild was du malen willst tun.
Beim zweiten dann unten rechts.

http://filesmelt.com/Imagehosting/pics/bf21ace842cfc06f9ccc2fe4b76b00e3.png

Pij
02.07.2009, 22:24
awz lol, vergiss es.
Hab da immer 99 bzw. 120 reingeschrieben.
Ist wohl der Abstand zwischen den einzelnen Pixeln bei dem zu zeichnendem :gmod:

Jetzt funktioniert es.
Super Programm :up:
http://i44.tinypic.com/2ldfzhf.jpg

Alex22
02.07.2009, 22:29
Pretty impressive!

Echt gute Arbeit. Vorallem, dass der den Grayscale Wert ausrechnet :3

Pij
02.07.2009, 22:36
Das Programm sollte sich nach dem Malen nicht selbst beenden =(

fame
02.07.2009, 22:49
Oh ja das hasse ich an AutoIT. Es ist schnell überfordert und lagt.

Aber gutes Programm. Kannst ja noch einbauen, dass Aero automatisch deaktiviert wird ;).

Maurice
02.07.2009, 22:52
Extra für dich hier ne Version die am ende nachfragt:

http://filesmelt.com/Filehosting2/downloader.php?file=image copy 1_1.rar

Autoit laggt nicht. MSN laggt. (Außer mit aero aber **** aero)
Ich bezweifle dass Autoit aero ausstellen kann. Rumklick lösungen sind mir zu anfällig.

Pij
03.07.2009, 00:09
File not found D:

fame
03.07.2009, 00:20
AutoIt lagt bei aufwenigen Sachen sehr wohl :P. Hab da schon meine Erfahrungen gemacht D:.

Blöd ist auch das es kein Multithreadning gibt. Nen Fenster mit vielen Funktionen kann dann alleine nur wegen der Whileschleife verzögert Befehle ausführen. Daher nutze ich Autoit nurnoch für einfache Sachen xD.

peacemaker
03.07.2009, 02:09
Härtetest:
http://m0nst3rkill3r.de/images/kill.jpg
Failed :(

Maurice
03.07.2009, 02:41
Ja, und zwar Paint.
Es liegt an Paint. Paint ist zu langsam.

Die nächste Version wird ordentliches dithering haben.

http://filesmelt.com/Imagehosting/pics/73eb3c04172a91e62735d368a48a9d62.png

Keine diagonalen Linien mehr.

http://filesmelt.com/Imagehosting/pics/f2ee85f0aaafa6f97c976af499b50650.png

Pij
03.07.2009, 09:14
Nächste Version?
Du perfektionierst es?
Das gefällt mir :gmod:

Maurice
03.07.2009, 09:52
Updated.

http://filesmelt.com/Imagehosting/pics/ad25c6849c8968743cfff8b28b8eccf9.png

HI, BILLY MAYS ONE POINT TWO HERE!

Pij
03.07.2009, 10:16
Wo malst du denn die Bilder?
MSN ist genauso lahm wie Paint und GIMP ist sogar noch langsamer.

Maurice
03.07.2009, 10:25
Msn.
musst halt etwas warten (und aero aus haben!)
Gimp und Paint kacken beide ab.

tui
03.07.2009, 11:12
Klappt eigentlich ganz gut:
http://img198.imageshack.us/img198/4800/klappt.png
Aber andere können meine Bilder nicht sehen :<

Maurice
03.07.2009, 12:37
████████████████� �███████████████
████████████████� �███████████████
████████████████� �███████████████
████████████████� �███████████████
████████████████� �███████████████
████████████████� �███████████████
████████████████� �███████████████
████████████████� �███████████████
████████████████� �███████████████
████████████████� �███████████████
████████████████� �███████████████
████████████████� �███████████████
████████████████� �███████████████
████████████████� �███████████████
████████████████� �███████████████
████████████████� �███████████████

Kurz gemodded dass es ASCII malt, aber naja.

(Das ist das Youtube favicon)

zocker113
03.07.2009, 12:50
es wird nach und nach immer langsamer D:
Am Anfang ists sau schnell und am Ende bracuht es ewig für eine Zeile.

Maurice
03.07.2009, 12:58
MSN schuld.
Du kannst währrend er malt, der Cursor sich aber nicht mehr bewegt, etwas anderes machen (Nur nicht zurück in den Text Modus!)

zocker113
15.09.2009, 15:32
Arbeitest du noch an dem Programm? :O

Maurice
15.09.2009, 15:46
Arbeitest du noch an dem Programm? :O

Uh, ich hab noch ne v3 mit Farben gemacht aber ich sehe kein erweiterungspotential.

http://filesmelt.com/downloader/MSN_draw_new.zip

http://filesmelt.com/downloader/msndrawnew1.png

Ziemlich wie das alte, sollte selbsterklärend sein. Du musst warten bis der mit ner Farbe fertig ist bevor du bei dem Fenster OK drückst.

http://filesmelt.com/downloader/MSN_draw_new_source.txt