1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

SANE Scanbereich einstellen

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Skeeve, 06.01.08.

  1. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Dies Script dürfte für die Nutzer von SANE interessant sein. Wenn ich den Scanbereich einstellen will, dann ist es nahezu unmöglich, den passenden Wert zu treffen, da man entweder nur mikrometergenau einstellen kann oder grob mit dem Schieber einen Wert suchen kann.

    Das angehängte script erlaubt es, den Scanbereich frei einzugeben. Allerdings nur Breite und Höhe, also rechter und unterer Rand des Scanbereichs. Für mich hat das gereicht und das Script sollte ja nun mal für mich sein ;)

    • Kopiert es in den Script Editor
    • Speichert es als Programm unter (z.B.) dem Namen "twain-dim"
    • Vor(!) dem Aufruf der Scansoftware, ruft Ihr das Script auf
    • wählt (bei eventuell vorhandenen mehreren Scannern) den passenden
    • Ihr seht dann den momentanen Scanbereich gerundet auf 2 Nachkommastellen als "Breite x Höhe"
    • gebt die gewünschten Werte mit "x" getrennt ein
    • Startet anschließend die Scan Software
    Leider muß die Scansoftware vor jeder Scriptbenutzung beendet werden, da die neuen Werte ansonsten von der Software ignoriert werden.

    Code:
    (*
    twain-dim v0.1 (C) 2008 by Skeeve
    mailto: twain-dim.question.skeeve et xoxy dot net
    *)
    
    property TWAIN : "se.ellert.twain-sane"
    property CD_key : "Current Device"
    
    on run
    	set available_devices to get_twain_devices()
    	set current_device to get_twain_device()
    	repeat
    		if (count of available_devices) is greater than 1 then
    			set new_cd to choose from list available_devices default items {current_device}
    			if new_cd is false then exit repeat
    			set current_device to first item of new_cd
    		end if
    		set x_y to get_x_y(current_device)
    		set new_x_y to display dialog "Neuer Scanbereich" default answer x_y
    		set_x_y(current_device, text returned of new_x_y)
    		if (count of available_devices) is 1 then exit repeat
    	end repeat
    end run
    
    to get_twain_device()
    	return first paragraph of (do shell script "defaults read " & TWAIN & " " & quoted form of CD_key)
    end get_twain_device
    
    to get_twain_devices()
    	return paragraphs of (do shell script "defaults read " & TWAIN & " | perl -e " & quoted form of ("
    			undef $/;
    			$_=<>;
    			exit 1 unless /^(\\s+)\"" & CD_key & "\"/m;
    			print join qq(\\n),/^$1\"Device\\s+([^\"]+)\"/gm
    			"))
    end get_twain_devices
    
    to get_x_y(twain_device)
    	return paragraphs of (do shell script "defaults read " & TWAIN & " " & (quoted form of ("Device " & twain_device)) & " | perl -e " & quoted form of ("
    			undef $/;
    			$_=<>;
    			my %res= {x=>'',y=>''};
    			$res{$1}= int($2*100+0.5)/100 while /\"br-(x|y)\"\\s+=\\s+(\\d+(?:\\.\\d+)?)/g;
    			print $res{'x'}.' x '.$res{'y'}; 
    			"))
    end get_x_y
    
    to set_x_y(twain_device, x_y)
    	set x to offset of "x" in x_y
    	set y to text (x + 1) thru -1 of x_y
    	set x to text 1 thru (x - 1) of x_y
    	do shell script "defaults write " & TWAIN & " " & (quoted form of ("Device " & twain_device)) & " -dict-add br-x -float " & x & " br-y -float " & y
    end set_x_y
    
     

Diese Seite empfehlen