• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

SANE Scanbereich einstellen

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
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