Jump to content
Sign in to follow this  
NeoFoX

Image to Text

Recommended Posts

Edit NEW: New functions ;) see for yourself...

Edit4: Edited a 'progress-bar'..

Edit3: Edited a '% pixel use' option..

Edit2: Edited a 'Font-size select' option..

Edit1: Made the GUI a little better and added a Time-function how-long it took to convert.

Well, after a day of scripting my result:

Select your image with the Browse-button...

Select the characters and how they will be used (random or in sequence)...

Select Color or Grayscale...

And a background color...

And at last the Contrast level...

Wait a few secs.. and tadaa :)

(At the bottom there is a link to the script, and a link to the UDF of Lazycat which I used :) )

Any comments are welcome.. this is my first offical script so don't be to rude :P

Neo

_linenums:0'>
#include <File.au3>
#include <Guiconstants.au3>
#include <image_get_info.au3>

Global $i_height,$i_width,$waardes,$total,$info,$image,$contrast_value,$contrast_value_end,$size
Global $procent_pixels,$pixel_atm,$value_progress,$progressbar,$progress,$progress_count,$procent
Global $bg_color,$font_color,$size_ASCII

$Main = GUICreate("Image to Text", 629, 363, 193, 115)
GUICtrlCreateGroup("Preview Image", 8, 8, 305, 345)
$Picca = GUICtrlCreatePic("", 16, 32, 225, 209)
$slider_procent = GUICtrlCreateSlider (25,256,200,20)
GUICtrlSetState(-1,$GUI_DISABLE)
$slider_procent_text = GUICtrlCreateLabel("",230,256,50,20)
$Label9 = GUICtrlCreateLabel("% of pixels", 255, 255, 50, 17)
$width_test = GUICtrlCreateLabel(" ", 36, 286, 30, 17)
$Label2 = GUICtrlCreateLabel("x", 64, 286, 9, 17)
$height_test = GUICtrlCreateLabel(" ", 80, 286, 30, 17)
$file_size = GUICtrlCreateLabel(" ", 55, 310, 30, 17)
$Label5 = GUICtrlCreateLabel("Kb", 75, 310, 17, 17)
$Label6 = GUICtrlCreateLabel("Pixels", 128, 286, 31, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$tab_text =GUICtrlCreateTab (320,8, 305,345)
$color_grayscale = GUICtrlCreateTabitem("Color / Grayscale")
$browse = GUICtrlCreateButton("&Browse", 328, 32, 121, 33, 0)
GUICtrlCreateGroup("Characters:", 328, 72, 257, 80)
$characters = GUICtrlCreateInput("Characters", 336, 92, 100, 21)
$char_size = GUICtrlCreateCombo("Smallest", 450, 92, 100, 25)
GUICtrlSetData(-1,"Small|Normal|Large|Largest","Small")
$random = GUICtrlCreateRadio("Random", 336, 120, 105, 25)
GUICtrlSetState($Random, $GUI_CHECKED)
$Sequence = GUICtrlCreateRadio("Sequence", 456, 120, 121, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("Color:", 328, 160, 257, 95)
$color = GUICtrlCreateRadio("Color", 336, 176, 97, 25)
$grayscale  = GUICtrlCreateRadio("Grayscale", 456, 176, 97, 25)
GUICtrlSetState($color, $GUI_CHECKED)
$Label7 = GUICtrlCreateLabel("Background:",336, 207, 193, 25)
$bg_color = GUICtrlCreateCombo("BLACK", 336, 225, 193, 25)
GUICtrlSetData(-1,"WHITE","BLACK")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("Contrast:", 328, 260, 257, 49)
$high = GUICtrlCreateRadio("High", 336, 276, 113, 25)
$low = GUICtrlCreateRadio("Low", 456, 276, 113, 25)
GUICtrlSetState($low, $GUI_CHECKED)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$ok_button = GUICtrlCreateButton("&Convert", 328, 312, 281, 33, 0)

$ASCII = GUICtrlCreateTabitem("ASCII")
$browse_ASCII = GUICtrlCreateButton("&Browse", 328, 32, 121, 33, 0)
GUICtrlCreateGroup("Characters Size:", 328, 72, 257, 50)
$char_size_ASCII = GUICtrlCreateCombo("Smallest", 336, 92, 100, 25)
GUICtrlSetData(-1,"Small|Normal|Large|Largest","Small")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("Font/Background color:", 328, 130, 257, 120)
$Label7_ASCII = GUICtrlCreateLabel("Font color:",336, 150, 193, 25)
$font_color_ASCII = GUICtrlCreateCombo("BLACK", 336, 168, 193, 25)
GUICtrlSetData(-1,"WHITE","WHITE")
$Label7_ASCII = GUICtrlCreateLabel("Background:",336, 197, 193, 25)
$bg_color_ASCII = GUICtrlCreateCombo("BLACK", 336, 215, 193, 25)
GUICtrlSetData(-1,"WHITE","BLACK")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$invert = GUICtrlCreateCheckbox ("Invert", 336, 260, 120, 20)
$ok_button_ASCII = GUICtrlCreateButton("&Convert", 328, 312, 281, 33, 0)
GUISetState(@SW_SHOW)

While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
        Exit
    Case $msg = $browse
        $file = FileOpenDialog("test",@MyDocumentsDir,"images (*.jpg;*.gif)")
        $aInfo_test = _ImageGetInfo($file)
        GUICtrlSetData($width_test, _ImageGetParam($aInfo_test, "Width"))
        GUICtrlSetData($height_test, _ImageGetParam($aInfo_test, "Height"))
        Guictrlsetdata($file_size, int(FileGetSize($file)/1000))
        GUICtrlSetImage($picca,$file)
        GUICtrlSetState($slider_procent,$GUI_ENABLE)
        GUICtrlSetData($slider_procent,25)
    case $msg = $browse_ASCII
        $file = FileOpenDialog("test",@MyDocumentsDir,"images (*.jpg;*.gif)")
        $aInfo_test = _ImageGetInfo($file)
        GUICtrlSetData($width_test, _ImageGetParam($aInfo_test, "Width"))
        GUICtrlSetData($height_test,_ImageGetParam($aInfo_test, "Height"))
        Guictrlsetdata($file_size, int(FileGetSize($file)/1000))
        GUICtrlSetImage($picca,$file)
        GUICtrlSetState($slider_procent,$GUI_ENABLE)
        GUICtrlSetData($slider_procent,25)
    Case $msg = $ok_button
        values()
    case $msg = $ok_button_ASCII
        values_ASCII()
    EndSelect
    $read_procent = GUICtrlRead($slider_procent)
    GUICtrlSetData($slider_procent_text,$read_procent)
    Sleep(25)
WEnd

func values()
        Local $calc_total = 0
        $aInfo = _ImageGetInfo($file)
        $i_width = _ImageGetParam($aInfo, "Width")
        $i_height =  _ImageGetParam($aInfo, "Height")
        $image = GUICreate("",$i_width,$i_height,-1,-1,$WS_POPUP,$WS_EX_TOPMOST)
        GUICtrlCreatePic($file,0,0,$i_width,$i_height)
        $pr_height = WinGetPos($image)
        $progress = Guicreate("Progress",130,60,-1,$pr_height[1]-65,$WS_POPUP,$WS_EX_TOPMOST)
        GUICtrlCreateLabel("Reading:",10,10,100,20)
        $pixel_atm = GUICtrlCreateLabel("",60,10,150,20)
        GUICtrlCreateLabel("/",90,10,100,20)
        $pixel_total = GUICtrlCreateLabel("",100,10,100,20)
        $progressbar = GUICtrlCreateProgress (15,30,100,20,$PBS_SMOOTH)
        $procent = GUICtrlCreateLabel("100",50,33,30,20)
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
        GUICtrlCreateLabel("%",70,33,30,20)
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
        GUISetState(@SW_hide,$main)
        GUISetState(@SW_Show,$image)
        GUISetState(@SW_Show,$progress)
        $waardes = GUICtrlRead($characters)
        $total = Int(StringLen($waardes))
        $info = WinGetPos($image)
        $read_procent = GUICtrlRead($slider_procent)
        $value = 100 / $read_procent
        $procent_pixels = Round($value)
        if $procent_pixels = 1 Then
            $procent_pixels = 2
        EndIf
        $pixel_total_width = GUICtrlRead($width_test)
        $pixel_total_height = GUICtrlRead($height_test)
        $calc_1 = round($pixel_total_width/($procent_pixels-1))
        $calc_2 = round($pixel_total_height/$procent_pixels)
        $calc_1_2 = $calc_1 * $calc_2
        GUICtrlSetData($pixel_total,$calc_1_2)
        $value_progress = 100/$calc_1_2
        $r_checked = GUICtrlRead($random)
        $l_checked = GuiCtrlRead($low)
        $c_checked = GUICtrlRead($color)
        $size_char = GUICtrlRead($char_size)
        Select
        case $size_char = "Smallest"
            $size = "-6"
        case $size_char = "Small"
            $size = "-3"
        case $size_char = "Normal"
            $size = "1"
        case $size_char = "Large"
            $size = "4"
        case $size_char = "Largest"
            $size = "6"
        EndSelect
        Select
        case $r_checked = $GUI_CHECKED and $l_checked = $GUI_CHECKED and $c_checked = $GUI_CHECKED
            $contrast_value = "<pre>"
            $contrast_value_end = "</pre>"
            convert_color_random()
        case $r_checked = $GUI_CHECKED and $l_checked = $GUI_UNCHECKED and $c_checked = $GUI_CHECKED
            $contrast_value = ""
            $contrast_value_end = ""
            convert_color_random()
        case $r_checked = $GUI_UNCHECKED and $l_checked = $GUI_CHECKED and $c_checked = $GUI_CHECKED
            $contrast_value = "<pre>"
            $contrast_value_end = "</pre>"
            convert_color_Sequence()
        case $r_checked = $GUI_UNCHECKED and $l_checked = $GUI_UNCHECKED and $c_checked = $GUI_CHECKED
            $contrast_value = ""
            $contrast_value_end = ""
            convert_color_Sequence()
        case $r_checked = $GUI_CHECKED and $l_checked = $GUI_CHECKED and $c_checked = $GUI_UNCHECKED
            $contrast_value = "<pre>"
            $contrast_value_end = "</pre>"
            convert_grayscale_random()
        case $r_checked = $GUI_CHECKED and $l_checked = $GUI_UNCHECKED and $c_checked = $GUI_UNCHECKED
            $contrast_value = ""
            $contrast_value_end = ""
            convert_grayscale_random()
        case $r_checked = $GUI_UNCHECKED and $l_checked = $GUI_CHECKED and $c_checked = $GUI_UNCHECKED
            $contrast_value = "<pre>"
            $contrast_value_end = "</pre>"
            convert_grayscale_Sequence()
        case $r_checked = $GUI_UNCHECKED and $l_checked = $GUI_UNCHECKED and $c_checked = $GUI_UNCHECKED
            $contrast_value = ""
            $contrast_value_end = ""
            convert_grayscale_Sequence()
       EndSelect
EndFunc
   
Func values_ASCII()
        Local $calc_total = 0
        $aInfo = _ImageGetInfo($file)
        $i_width = _ImageGetParam($aInfo, "Width")
        $i_height =  _ImageGetParam($aInfo, "Height")
        $image = GUICreate("",$i_width,$i_height,-1,-1,$WS_POPUP,$WS_EX_TOPMOST)
        GUICtrlCreatePic($file,0,0,$i_width,$i_height)
        $pr_height = WinGetPos($image)
        $progress = Guicreate("Progress",130,60,-1,$pr_height[1]-65,$WS_POPUP,$WS_EX_TOPMOST)
        GUICtrlCreateLabel("Reading:",10,10,100,20)
        $pixel_atm = GUICtrlCreateLabel("",60,10,150,20)
        GUICtrlCreateLabel("/",90,10,100,20)
        $pixel_total = GUICtrlCreateLabel("",100,10,100,20)
        $progressbar = GUICtrlCreateProgress (15,30,100,20,$PBS_SMOOTH)
        $procent = GUICtrlCreateLabel("100",50,33,30,20)
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
        GUICtrlCreateLabel("%",70,33,30,20)
        GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
        GUISetState(@SW_hide,$main)
        GUISetState(@SW_Show,$image)
        GUISetState(@SW_Show,$progress)
        $pixel_total_width = GUICtrlRead($width_test)
        $pixel_total_height = GUICtrlRead($height_test)
        $calc_1 = round($pixel_total_width/($procent_pixels-1))
        $calc_2 = round($pixel_total_height/$procent_pixels)
        $calc_1_2 = $calc_1 * $calc_2
        GUICtrlSetData($pixel_total,$calc_1_2)
        $value_progress = 100/$calc_1_2
        $info = WinGetPos($image)
        $read_procent = GUICtrlRead($slider_procent)
        $value = 100 / $read_procent
        $procent_pixels = Round($value)
        if $procent_pixels = 1 Then
            $procent_pixels = 2
        EndIf
        $pixel_total_width = GUICtrlRead($width_test)
        $pixel_total_height = GUICtrlRead($height_test)
        $calc_1 = round($pixel_total_width/($procent_pixels-1))
        $calc_2 = round($pixel_total_height/$procent_pixels)
        $calc_1_2 = $calc_1 * $calc_2
        GUICtrlSetData($pixel_total,$calc_1_2)
        $value_progress = 100/$calc_1_2
        $font_color = GUICtrlRead($font_color_ASCII)
        $bg_color = GUICtrlRead($bg_color_ASCII)
        $size_char = GUICtrlRead($char_size_ASCII)
    Select
        case $size_char = "Smallest"
            $size_ASCII = "-6"
        case $size_char = "Small"
            $size_ASCII = "-3"
        case $size_char = "Normal"
            $size_ASCII = "1"
        case $size_char = "Large"
            $size_ASCII = "4"
        case $size_char = "Largest"
            $size_ASCII = "6"
    EndSelect
    if GUICtrlRead($invert) = 1 Then
        convert_ASCII_invert()
    Else
        convert_ASCII()
    EndIf
EndFunc   
   
Func convert_color_random()
       Local $pixel
       $begin = TimerInit()
       FileDelete(@ScriptDir & "\html.htm")
       FileWrite(@ScriptDir & "\html.htm","<html>" & @crlf)
       FileWrite(@ScriptDir & "\html.htm","<body>" & @crlf & '<table width="70%"><tr><td> <table align="center" cellpadding="10"> <tr bgcolor="' & GUICtrlRead($bg_color) & '"> <td> <font size="' & $size & '">' & $contrast_value & @crlf)
       For $i = 1 to $i_height step +$procent_pixels
               For $x = 1 to $i_width step +($procent_pixels-1)
                    $color = PixelGetColor($info[0] + $x , $info[1] + $i)
                    $char = Random(1,$total+1)
                    FileWrite(@ScriptDir & "\html.htm",'<font color="#' & Hex($color,6) & '">' & StringMid($waardes,$char,1) & "</font>")
                    $pixel = $pixel + 1
                    GUICtrlSetData($pixel_atm,$pixel)
                    $progress_count = $progress_count + $value_progress
                    $progress_count_rounded = Round($progress_count)
                    GUICtrlSetData($progressbar,$progress_count_rounded)
                    GUICtrlSetData($procent,$progress_count_rounded)
               Next
               FileWrite(@ScriptDir & "\html.htm","<br>")
       Next
       GUISetState(@SW_HIDE,$image)
       FileWrite(@ScriptDir & "\html.htm",$contrast_value_end & @crlf & "</font>" & @crlf & "</td></tr></table></td></tr></table>" & @crlf)
       $dif = TimerDiff($begin)
       Filewrite(@scriptdir & "\html.htm", @crlf & '<font face="arial"> Time took to convert: <b>' & int($dif/1000) & "</b> sec.</font>" & @crlf & "</body>" & @crlf & "</html>")
       ShellExecute(@ScriptDir & "\html.htm", "", @ScriptDir, "open")
       GUISetState(@SW_HIDE,$progress)
       Exit
EndFunc

Func convert_color_Sequence()
       Local $pixel
       $begin = TimerInit()
       FileDelete(@ScriptDir & "\html.htm")
       FileWrite(@ScriptDir & "\html.htm","<html>" & @crlf)
       FileWrite(@ScriptDir & "\html.htm","<body>" & @crlf & '<table width="70%"><tr><td> <table align="center" cellpadding="10"> <tr bgcolor="' & GUICtrlRead($bg_color) & '"> <td> <font size="' & $size & '">' & $contrast_value & @crlf)
       For $i = 1 to $i_height step +$procent_pixels
               For $x = 1 to $i_width step +($procent_pixels-1)
                    $color = PixelGetColor($info[0] + $x , $info[1] + $i)
                    $show = $waardes
                    FileWrite(@ScriptDir & "\html.htm",'<font color="#' & $color & '">' & $show & "</font>")
                    $pixel = $pixel + 1
                    GUICtrlSetData($pixel_atm,$pixel)
                    $progress_count = $progress_count + $value_progress
                    $progress_count_rounded = Round($progress_count)
                    GUICtrlSetData($progressbar,$progress_count_rounded)
                    GUICtrlSetData($procent,$progress_count_rounded)
               Next
        FileWrite(@ScriptDir & "\html.htm","<br>")
       Next
       GUISetState(@SW_HIDE,$image)
       FileWrite(@ScriptDir & "\html.htm", $contrast_value_end & @crlf & "</font>" & @crlf & "</td></tr></table></td></tr></table>" & @crlf)
       $dif = TimerDiff($begin)
       Filewrite(@scriptdir & "\html.htm", @crlf & '<font face="arial"> Time took to convert: <b>' & int($dif/1000) & "</b> sec.</font>" & @crlf & "</body>" & @crlf & "</html>")
       ShellExecute(@ScriptDir & "\html.htm", "", @ScriptDir, "open")
       GUISetState(@SW_HIDE,$progress)
       Exit
   EndFunc
   
Func convert_grayscale_random()
       Local $pixel
       $begin = TimerInit()
       FileDelete(@ScriptDir & "\html.htm")
       FileWrite(@ScriptDir & "\html.htm","<html>" & @crlf)
       FileWrite(@ScriptDir & "\html.htm","<body>" & @crlf & '<table width="70%"><tr><td> <table align="center" cellpadding="10"> <tr bgcolor="' & GUICtrlRead($bg_color) & '"> <td> <font size="' & $size & '">' & $contrast_value & @crlf)
       For $i = 1 to $i_height step +$procent_pixels
               For $x = 1 to $i_width step +($procent_pixels-1)
                    $color = PixelGetColor($info[0] + $x , $info[1] + $i)
                    $char = Random(1,$total+1)
                    $var = Hex($color, 6)
                    $gray_1 = int(dec(StringLeft($var,2))*0.3)
                    $gray_2 = int(dec(StringMid($var,3,2))*0.59)
                    $gray_3 = int(dec(StringRight($var,2))*0.11)
                    $grayscale = StringSplit(hex($gray_1 + $gray_2 + $gray_3),"000000",1)
                    FileWrite(@ScriptDir & "\html.htm",'<font color="#' & $grayscale[2] & $grayscale[2] & $grayscale[2] & '">' & StringMid($waardes,$char,1) & "</font>")
                    $pixel = $pixel + 1
                    GUICtrlSetData($pixel_atm,$pixel)
                    $progress_count = $progress_count + $value_progress
                    $progress_count_rounded = Round($progress_count)
                    GUICtrlSetData($progressbar,$progress_count_rounded)
                    GUICtrlSetData($procent,$progress_count_rounded)
               Next
        FileWrite(@ScriptDir & "\html.htm","<br>")
       Next
       GUISetState(@SW_HIDE,$image)
       FileWrite(@ScriptDir & "\html.htm", $contrast_value_end & @crlf & "</font>" & @crlf & "</td></tr></table></td></tr></table>" & @CRLF)
       $dif = TimerDiff($begin)
       Filewrite(@scriptdir & "\html.htm", @crlf & '<font face="arial"> Time took to convert: <b>' & int($dif/1000) & "</b> sec.</font>" & @crlf & "</body>" & @crlf & "</html>")
       ShellExecute(@ScriptDir & "\html.htm", "", @ScriptDir, "open")
       GUISetState(@SW_HIDE,$progress)
       Exit
   EndFunc
   
Func convert_grayscale_Sequence()
       Local $pixel
       $begin = TimerInit()
       FileDelete(@ScriptDir & "\html.htm")
       FileWrite(@ScriptDir & "\html.htm","<html>" & @crlf)
       FileWrite(@ScriptDir & "\html.htm","<body>" & @crlf & '<table width="70%"><tr><td> <table align="center" cellpadding="10"> <tr bgcolor="' & GUICtrlRead($bg_color) & '"> <td> <font size="' & $size & '">' & $contrast_value & @crlf)
       For $i = 1 to $i_height step +$procent_pixels
               For $x = 1 to $i_width step +($procent_pixels-1)
                    $color = PixelGetColor($info[0] + $x , $info[1] + $i)
                    $show = $waardes
                    $var = Hex($color, 6)
                    $gray_1 = int(dec(StringLeft($var,2))*0.3)
                    $gray_2 = int(dec(StringMid($var,3,2))*0.59)
                    $gray_3 = int(dec(StringRight($var,2))*0.11)
                    $grayscale = StringSplit(hex($gray_1 + $gray_2 + $gray_3),"000000",1)
                    FileWrite(@ScriptDir & "\html.htm",'<font color="#' & $grayscale[2] & $grayscale[2] & $grayscale[2] & '">' & $show & "</font>")
                    $pixel = $pixel + 1
                    GUICtrlSetData($pixel_atm,$pixel)
                    $progress_count = $progress_count + $value_progress
                    $progress_count_rounded = Round($progress_count)
                    GUICtrlSetData($progressbar,$progress_count_rounded)
                    GUICtrlSetData($procent,$progress_count_rounded)
               Next
        FileWrite(@ScriptDir & "\html.htm","<br>")
       Next
       GUISetState(@SW_HIDE,$image)
       FileWrite(@ScriptDir & "\html.htm", $contrast_value_end & @crlf & "</font>" & @crlf & "</td></tr></table></td></tr></table>" & @crlf)
       $dif = TimerDiff($begin)
       Filewrite(@scriptdir & "\html.htm", @crlf & '<font face="arial"> Time took to convert: <b>' & int($dif/1000) & "</b> sec.</font>" & @crlf & "</body>" & @crlf & "</html>")
       ShellExecute(@ScriptDir & "\html.htm", "", @ScriptDir, "open")
       GUISetState(@SW_HIDE,$progress)
       Exit
EndFunc

func convert_ASCII()
       Local $pixel
       $begin = TimerInit()
       Dim $replace_characters[17]
       $replace_characters[0] = "#"
       $replace_characters[1] = "W"
       $replace_characters[2] = "M"
       $replace_characters[3] = "B"
       $replace_characters[4] = "R"
       $replace_characters[5] = "X"
       $replace_characters[6] = "V"
       $replace_characters[7] = "Y"
       $replace_characters[8] = "I"
       $replace_characters[9] = "t"
       $replace_characters[10] = "i"
       $replace_characters[11] = "+"
       $replace_characters[12] = "="
       $replace_characters[13] = ";"
       $replace_characters[14] = ":"
       $replace_characters[15] = ","
       $replace_characters[16] = "."
      FileDelete(@ScriptDir & "\html.htm")
      FileWrite(@ScriptDir & "\html.htm","<html>" & @crlf)
      FileWrite(@ScriptDir & "\html.htm","<body>" & @crlf &'<table width="80%"><tr><td> <table align="center" cellpadding="10" > <tr bgcolor="' & $bg_color & '"> <td> <font color="' & $font_color & '" size="' & $size_ASCII & '"><pre>' &@crlf)
      For $i = 1 to $i_height step +$procent_pixels
              For $x = 1 to $i_width step +($procent_pixels-1)
                    $color = PixelGetColor($info[0] + $x , $info[1] +$i)
                    $var = Hex($color, 6)
                    $gray_1 = dec(StringLeft($var,2))
                    $gray_2 = dec(StringMid($var,3,2))
                    $gray_3 = dec(StringRight($var,2))
                    $brightness = $gray_1+$gray_2+$gray_3
                    $replace_character_id = Round($brightness/50) +1
                    FileWrite(@ScriptDir & "\html.htm",$replace_characters[$replace_character_id])
                    $pixel = $pixel + 1
                    GUICtrlSetData($pixel_atm,$pixel)
                    $progress_count = $progress_count + $value_progress
                    $progress_count_rounded = Round($progress_count)
                    GUICtrlSetData($progressbar,$progress_count_rounded)
                    GUICtrlSetData($procent,$progress_count_rounded)
              Next
       FileWrite(@ScriptDir & "\html.htm",@CRLF)
      Next
      GUISetState(@SW_HIDE,$image)
      FileWrite(@ScriptDir & "\html.htm", "</pre></font>" & @crlf & "</td></tr></table></td></tr></table>" & @crlf)
      $dif = TimerDiff($begin)
      Filewrite(@scriptdir & "\html.htm", @crlf & '<font face="arial"> Time took to convert: <b>' & int($dif/1000) & "</b> sec.</font>" & @crlf & "</body>" & @crlf & "</html>")
      ShellExecute(@ScriptDir & "\html.htm", "", @ScriptDir, "open")
      Exit
EndFunc
  
func convert_ASCII_invert()
       Local $pixel
       $begin = TimerInit()
       Dim $replace_characters[17]
       $replace_characters[0] = "."
       $replace_characters[1] = ","
       $replace_characters[2] = ":"
       $replace_characters[3] = ";"
       $replace_characters[4] = "="
       $replace_characters[5] = "+"
       $replace_characters[6] = "i"
       $replace_characters[7] = "t"
       $replace_characters[8] = "I"
       $replace_characters[9] = "Y"
       $replace_characters[10] = "V"
       $replace_characters[11] = "X"
       $replace_characters[12] = "R"
       $replace_characters[13] = "B"
       $replace_characters[14] = "M"
       $replace_characters[15] = "W"
       $replace_characters[16] = "#"
      FileDelete(@ScriptDir & "\html.htm")
      FileWrite(@ScriptDir & "\html.htm","<html>" & @crlf)
      FileWrite(@ScriptDir & "\html.htm","<body>" & @crlf &'<table width="80%"><tr><td> <table align="center" cellpadding="10" > <tr bgcolor="' & $bg_color & '"> <td> <font color="' & $font_color & '" size="' & $size_ASCII & '"><pre>' &@crlf)
      For $i = 1 to $i_height step +$procent_pixels
              For $x = 1 to $i_width step +($procent_pixels-1)
                    $color = PixelGetColor($info[0] + $x , $info[1] +$i)
                    $var = Hex($color, 6)
                    $gray_1 = dec(StringLeft($var,2))
                    $gray_2 = dec(StringMid($var,3,2))
                    $gray_3 = dec(StringRight($var,2))
                    $brightness = $gray_1+$gray_2+$gray_3
                    $replace_character_id = Round($brightness/50) +1
                    FileWrite(@ScriptDir & "\html.htm",$replace_characters[$replace_character_id])
                    $pixel = $pixel + 1
                    GUICtrlSetData($pixel_atm,$pixel)
                    $progress_count = $progress_count + $value_progress
                    $progress_count_rounded = Round($progress_count)
                    GUICtrlSetData($progressbar,$progress_count_rounded)
                    GUICtrlSetData($procent,$progress_count_rounded)
              Next
       FileWrite(@ScriptDir & "\html.htm",@CRLF)
      Next
      GUISetState(@SW_HIDE,$image)
      FileWrite(@ScriptDir & "\html.htm", "</pre></font>" & @crlf & "</td></tr></table></td></tr></table>" & @crlf)
      $dif = TimerDiff($begin)
      Filewrite(@scriptdir & "\html.htm", @crlf & '<font face="arial"> Time took to convert: <b>' & int($dif/1000) & "</b> sec.</font>" & @crlf & "</body>" & @crlf & "</html>")
      ShellExecute(@ScriptDir & "\html.htm", "", @ScriptDir, "open")
      Exit
EndFunc

*Edit: Some pic-examples:

Color:

Posted Image

Grayscale:

Posted Image

First script: 100 downloads+ :)

image_to_text.au3

image_get_info.au3

Edited by NeoFoX

[center][font="Arial"]--- The Neo and Only --- [/font][font="Arial"]--Projects---[/font]Image to Text converterText to ASCII converter[/center]

Share this post


Link to post
Share on other sites

*Edited: Now you can chose how much % of the image you want to convert

(100% is slow... but will give you a, almost perfect and nice image/text :D)

See first post :)

Neo

ps. Thanks all for the comments :D

Edited by NeoFoX

[center][font="Arial"]--- The Neo and Only --- [/font][font="Arial"]--Projects---[/font]Image to Text converterText to ASCII converter[/center]

Share this post


Link to post
Share on other sites

 _linenums:0'>#include <File.au3>
#include <Guiconstants.au3>
#include <image_get_info.au3>

Global $i_height,$i_width,$waardes,$total,$info,$image,$contrast_value,$contrast_value_end,$size, $progress
Global $procent_pixels

$Main = GUICreate("Image to Text", 629, 363, 193, 115)
GUICtrlCreateGroup("Preview Image", 8, 8, 305, 345)
$Picca = GUICtrlCreatePic("", 16, 32, 225, 209)
$slider_procent = GUICtrlCreateSlider (25,256,200,20)
GUICtrlSetState(-1,$GUI_DISABLE)
$slider_procent_text = GUICtrlCreateLabel("",230,256,50,20)
$Label9 = GUICtrlCreateLabel("% of pixels", 255, 255, 50, 17)
$width_test = GUICtrlCreateLabel(" ", 36, 286, 30, 17)
$Label2 = GUICtrlCreateLabel("x", 64, 286, 9, 17)
$height_test = GUICtrlCreateLabel(" ", 80, 286, 30, 17)
$file_size = GUICtrlCreateLabel(" ", 55, 310, 30, 17)
$Label5 = GUICtrlCreateLabel("Kb", 72, 310, 17, 17)
$Label6 = GUICtrlCreateLabel("Pixels", 128, 286, 31, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("Options", 320, 8, 305, 345)
$browse = GUICtrlCreateButton("&Browse", 328, 32, 121, 33, 0)
GUICtrlCreateGroup("Characters:", 328, 72, 257, 80)
$characters = GUICtrlCreateInput("Characters", 336, 92, 100, 21)
$char_size = GUICtrlCreateCombo("Smallest", 450, 92, 100, 25)
GUICtrlSetData(-1,"Small|Normal|Large|Largest","Small")
$random = GUICtrlCreateRadio("Random", 336, 120, 105, 25)
GUICtrlSetState($Random, $GUI_CHECKED)
$Sequence = GUICtrlCreateRadio("Sequence", 456, 120, 121, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("Color:", 328, 160, 257, 95)
$color = GUICtrlCreateRadio("Color", 336, 176, 97, 25)
$grayscale  = GUICtrlCreateRadio("Grayscale", 456, 176, 97, 25)
GUICtrlSetState($color, $GUI_CHECKED)
$Label7 = GUICtrlCreateLabel("Background:",336, 207, 193, 25)
$bg_color = GUICtrlCreateCombo("BLACK", 336, 225, 193, 25)
GUICtrlSetData(-1,"WHITE","BLACK")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUICtrlCreateGroup("Contrast:", 328, 260, 257, 49)
$high = GUICtrlCreateRadio("High", 336, 276, 113, 25)
$low = GUICtrlCreateRadio("Low", 456, 276, 113, 25)
GUICtrlSetState($low, $GUI_CHECKED)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$ok_button = GUICtrlCreateButton("&Convert", 328, 312, 281, 33, 0)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)

While 1
       $msg = GUIGetMsg()
       Select
       Case $msg = $GUI_EVENT_CLOSE
               Exit
       Case $msg = $browse
               $file = FileOpenDialog("test",@MyDocumentsDir,"images (*.jpg;*.gif)")
               $aInfo_test = _ImageGetInfo($file)
               GUICtrlSetData($width_test, _ImageGetParam($aInfo_test, "Width"))
               GUICtrlSetData($height_test, _ImageGetParam($aInfo_test, "Height"))
               Guictrlsetdata($file_size, int(FileGetSize($file)/1000))
               GUICtrlSetImage($picca,$file)
               GUICtrlSetState($slider_procent,$GUI_ENABLE)
               GUICtrlSetData($slider_procent,25)
       Case $msg = $ok_button
               values()
       EndSelect
       $read_procent = GUICtrlRead($slider_procent)
       GUICtrlSetData($slider_procent_text,$read_procent)
       Sleep(10)
WEnd

func values()
       $aInfo = _ImageGetInfo($file)
       $i_width = _ImageGetParam($aInfo, "Width")
       $i_height =  _ImageGetParam($aInfo, "Height")
       ;$image = GUICreate("",$i_width,$i_height,-1,-1,$WS_POPUP,$WS_EX_TOPMOST)
       ;GUICtrlCreatePic($file,0,0,$i_width,$i_height)
       $image = GUICreate("Progress", 350, 22, -1, -1)
       $progress = GUICtrlCreateProgress(1, 1, 345, 19)
       GUISetState(@SW_hide,$main)
       GUISetState(@SW_Show,$image)
       $waardes = GUICtrlRead($characters)
       $total = Int(StringLen($waardes))
       $info = WinGetPos($image)
       $read_procent = GUICtrlRead($slider_procent)
       $value = 100 / $read_procent
       $procent_pixels = Round($value)
       if $procent_pixels = 1 Then
           $procent_pixels = 2
       EndIf
       $r_checked = GUICtrlRead($random)
       $l_checked = GuiCtrlRead($low)
       $c_checked = GUICtrlRead($color)
       $size_char = GUICtrlRead($char_size)
       Select
        case $size_char = "smallest"
           $size = "-6"
        case $size_char = "small"
           $size = "-3"
        case $size_char = "normal"
           $size = "1"
        case $size_char = "large"
           $size = "4"
        case $size_char = "largest"
           $size = "6"
        EndSelect
       Select
        case $r_checked = $GUI_CHECKED and $l_checked = $GUI_CHECKED and $c_checked = $GUI_CHECKED
               $contrast_value = "<pre>"
               $contrast_value_end = "</pre>"
               convert_color_random()
        case $r_checked = $GUI_CHECKED and $l_checked = $GUI_UNCHECKED and $c_checked = $GUI_CHECKED
               $contrast_value = ""
               $contrast_value_end = ""
               convert_color_random()
        case $r_checked = $GUI_UNCHECKED and $l_checked = $GUI_CHECKED and $c_checked = $GUI_CHECKED
               $contrast_value = "<pre>"
               $contrast_value_end = "</pre>"
               convert_color_Sequence()
        case $r_checked = $GUI_UNCHECKED and $l_checked = $GUI_UNCHECKED and $c_checked = $GUI_CHECKED
               $contrast_value = ""
               $contrast_value_end = ""
               convert_color_Sequence()
        case $r_checked = $GUI_CHECKED and $l_checked = $GUI_CHECKED and $c_checked = $GUI_UNCHECKED
               $contrast_value = "<pre>"
               $contrast_value_end = "</pre>"
               convert_grayscale_random()
        case $r_checked = $GUI_CHECKED and $l_checked = $GUI_UNCHECKED and $c_checked = $GUI_UNCHECKED
               $contrast_value = ""
               $contrast_value_end = ""
               convert_grayscale_random()
        case $r_checked = $GUI_UNCHECKED and $l_checked = $GUI_CHECKED and $c_checked = $GUI_UNCHECKED
               $contrast_value = "<pre>"
               $contrast_value_end = "</pre>"
               convert_grayscale_Sequence()
        case $r_checked = $GUI_UNCHECKED and $l_checked = $GUI_UNCHECKED and $c_checked = $GUI_UNCHECKED
               $contrast_value = ""
               $contrast_value_end = ""
               convert_grayscale_Sequence()
       EndSelect
EndFunc
   
Func convert_color_random()
       $begin = TimerInit()
       FileDelete(@ScriptDir & "\html.htm")
       FileWrite(@ScriptDir & "\html.htm","<html>" & @crlf)
       FileWrite(@ScriptDir & "\html.htm","<body>" & @crlf & '<table width="70%"><tr><td> <table align="center" cellpadding="10"> <tr bgcolor="' & GUICtrlRead($bg_color) & '"> <td>' & $contrast_value & @crlf)
       For $i = 1 to $i_height step +$procent_pixels
               For $x = 1 to $i_width step +($procent_pixels-1)
                    $color = PixelGetColor($info[0] + $x , $info[1] + $i)
                    $char = Random(1,$total+1)
                    FileWrite(@ScriptDir & "\html.htm",'<font size="-6" color="#' & Hex($color,6) & '">' & StringMid($waardes,$char,1) & "</font>")
                    GUICtrlSetData($progress, $i / $i_height * 100)
               Next
               FileWrite(@ScriptDir & "\html.htm","<br>")
       Next
       GUISetState(@SW_HIDE,$image)
       FileWrite(@ScriptDir & "\html.htm",$contrast_value_end & @crlf & "</font>" & @crlf & "</td></tr></table></td></tr></table>" & @crlf)
       $dif = TimerDiff($begin)
       Filewrite(@scriptdir & "\html.htm", @crlf & '<font face="arial"> Time took to convert: <b>' & int($dif/1000) & "</b> sec.</font>" & @crlf & "</body>" & @crlf & "</html>")
       ShellExecute(@ScriptDir & "\html.htm", "", @ScriptDir, "open")
       Exit
EndFunc

Func convert_color_Sequence()
       $begin = TimerInit()
       FileDelete(@ScriptDir & "\html.htm")
       FileWrite(@ScriptDir & "\html.htm","<html>" & @crlf)
       FileWrite(@ScriptDir & "\html.htm","<body>" & @crlf & '<table width="70%"><tr><td> <table align="center" cellpadding="10"> <tr bgcolor="' & GUICtrlRead($bg_color) & '"> <td> <font size="' & $size & '">' & $contrast_value & @crlf)
       For $i = 1 to $i_height step +$procent_pixels
               For $x = 1 to $i_width step +($procent_pixels-1)
                    $color = PixelGetColor($info[0] + $x , $info[1] + $i)
                    $show = $waardes
                    FileWrite(@ScriptDir & "\html.htm",'<font color="#' & $color & '">' & $show & "</font>")
                    GUICtrlSetData($progress, $i / $i_height * 100)
               Next
        FileWrite(@ScriptDir & "\html.htm","<br>")
       Next
       GUISetState(@SW_HIDE,$image)
       FileWrite(@ScriptDir & "\html.htm", $contrast_value_end & @crlf & "</font>" & @crlf & "</td></tr></table></td></tr></table>" & @crlf)
       $dif = TimerDiff($begin)
       Filewrite(@scriptdir & "\html.htm", @crlf & '<font face="arial"> Time took to convert: <b>' & int($dif/1000) & "</b> sec.</font>" & @crlf & "</body>" & @crlf & "</html>")
       ShellExecute(@ScriptDir & "\html.htm", "", @ScriptDir, "open")
       Exit
   EndFunc
   
Func convert_grayscale_random()
       $begin = TimerInit()
       FileDelete(@ScriptDir & "\html.htm")
       FileWrite(@ScriptDir & "\html.htm","<html>" & @crlf)
       FileWrite(@ScriptDir & "\html.htm","<body>" & @crlf & '<table width="70%"><tr><td> <table align="center" cellpadding="10"> <tr bgcolor="' & GUICtrlRead($bg_color) & '"> <td> <font size="' & $size & '">' & $contrast_value & @crlf)
       For $i = 1 to $i_height step +$procent_pixels
               For $x = 1 to $i_width step +($procent_pixels-1)
                    $color = PixelGetColor($info[0] + $x , $info[1] + $i)
                    $char = Random(1,$total+1)
                    $var = Hex($color, 6)
                    $gray_1 = int(dec(StringLeft($var,2))*0.3)
                    $gray_2 = int(dec(StringMid($var,3,2))*0.59)
                    $gray_3 = int(dec(StringRight($var,2))*0.11)
                    $grayscale = StringSplit(hex($gray_1 + $gray_2 + $gray_3),"000000",1)
                    FileWrite(@ScriptDir & "\html.htm",'<font color="#' & $grayscale[2] & $grayscale[2] & $grayscale[2] & '">' & StringMid($waardes,$char,1) & "</font>")
                    GUICtrlSetData($progress, $i / $i_height * 100)
               Next
        FileWrite(@ScriptDir & "\html.htm","<br>")
       Next
       GUISetState(@SW_HIDE,$image)
       FileWrite(@ScriptDir & "\html.htm", $contrast_value_end & @crlf & "</font>" & @crlf & "</td></tr></table></td></tr></table>" & @CRLF)
       $dif = TimerDiff($begin)
       Filewrite(@scriptdir & "\html.htm", @crlf & '<font face="arial"> Time took to convert: <b>' & int($dif/1000) & "</b> sec.</font>" & @crlf & "</body>" & @crlf & "</html>")
       ShellExecute(@ScriptDir & "\html.htm", "", @ScriptDir, "open")
       Exit
   EndFunc
   
Func convert_grayscale_Sequence()
       $begin = TimerInit()
       FileDelete(@ScriptDir & "\html.htm")
       FileWrite(@ScriptDir & "\html.htm","<html>" & @crlf)
       FileWrite(@ScriptDir & "\html.htm","<body>" & @crlf & '<table width="70%"><tr><td> <table align="center" cellpadding="10"> <tr bgcolor="' & GUICtrlRead($bg_color) & '"> <td> <font size="' & $size & '">' & $contrast_value & @crlf)
       For $i = 1 to $i_height step +$procent_pixels
               For $x = 1 to $i_width step +($procent_pixels-1)
                    $color = PixelGetColor($info[0] + $x , $info[1] + $i)
                    $show = $waardes
                    $var = Hex($color, 6)
                    $gray_1 = int(dec(StringLeft($var,2))*0.3)
                    $gray_2 = int(dec(StringMid($var,3,2))*0.59)
                    $gray_3 = int(dec(StringRight($var,2))*0.11)
                    $grayscale = StringSplit(hex($gray_1 + $gray_2 + $gray_3),"000000",1)
                    FileWrite(@ScriptDir & "\html.htm",'<font color="#' & $grayscale[2] & $grayscale[2] & $grayscale[2] & '">' & $show & "</font>")
                    GUICtrlSetData($progress, $i / $i_height * 100)
               Next
        FileWrite(@ScriptDir & "\html.htm","<br>")
       Next
       GUISetState(@SW_HIDE,$image)
       FileWrite(@ScriptDir & "\html.htm", $contrast_value_end & @crlf & "</font>" & @crlf & "</td></tr></table></td></tr></table>" & @crlf)
       $dif = TimerDiff($begin)
       Filewrite(@scriptdir & "\html.htm", @crlf & '<font face="arial"> Time took to convert: <b>' & int($dif/1000) & "</b> sec.</font>" & @crlf & "</body>" & @crlf & "</html>")
       ShellExecute(@ScriptDir & "\html.htm", "", @ScriptDir, "open")
       Exit
EndFunc

Added a progress bar instead of the image :3

Great Work :)

EDIT::

That didnt work right xD.

Was that image needed? I was in a hurry, so I didnt check. =P

You might wanna tweak it, It uses the GUI's title bar as the image, lawl.

Edited by AzKay

# MY LOVE FOR YOU... IS LIKE A TRUCK- #

Share this post


Link to post
Share on other sites

This is a great script. Well done!


My Programs:AInstall - Create a standalone installer for your programUnit Converter - Converts Length, Area, Volume, Weight, Temperature and Pressure to different unitsBinary Clock - Hours, minutes and seconds have 10 columns each to display timeAutoIt Editor - Code Editor with Syntax Highlighting.Laserix Editor & Player - Create, Edit and Play Laserix LevelsLyric Syncer - Create and use Synchronised Lyrics.Connect 4 - 2 Player Connect 4 Game (Local or Online!, Formatted Chat!!)MD5, SHA-1, SHA-256, Tiger and Whirlpool Hash Finder - Dictionary and Brute Force FindCool Text Client - Create Rendered ImageMy UDF's:GUI Enhance - Enhance your GUIs visually.IDEA File Encryption - Encrypt and decrypt files easily! File Rename - Rename files easilyRC4 Text Encryption - Encrypt text using the RC4 AlgorithmPrime Number - Check if a number is primeString Remove - remove lots of strings at onceProgress Bar - made easySound UDF - Play, Pause, Resume, Seek and Stop.

Share this post


Link to post
Share on other sites

This is very nice :D but how do copy the image onto my computer in a different format rather than .html :)

i tried just changing what it saves the file as from .htm to .jpg but it never showed the pic when i opened it.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...