端末からスキャンを開始し、完了時に画像を表示したい自動的に。保存されたファイル名を知らなくても、どうすればこれを行うことができますか?私は現在、USB経由でスキャナーに接続されているノートブックでUbuntu 16.04LTSをローカルで実行しています。
次のターミナルコマンドを作成しました。ただし、問題は、スキャンプロセス中に1分以上経過すると、Eye of Gnomeが画像ファイルを見つけることができず、エラーメッセージが表示されることです。
scanimage --format=tiff > ~/Pictures/$(date +%Y%m%d_%H%M).tiff && sleep 5 ; eog --fullscreen ~/Pictures/$(date +%Y%m%d_%H%M).tiff
たとえば、画像ファイルは20170128_2314.tiff
として保存されますが、Eye ofGnomeまたはEOGは20170128_2315.tiff
を検索し、エラーが発生します。また、スキャナーの解像度設定によっては、スキャンの開始から終了まで1〜5分かかる場合があります。
画像ファイルは現在、私のホームディレクトリ〜/ Picturesフォルダに保存されています。
任意のヘルプや入力をいただければ幸いです。
以下のスクリプトは、_~/Pictures
_ディレクトリ内の最新のファイルを開きます。ファイルの命名方法やスクリプトの実行時期とは関係ありません。
もちろん、使用する他のディレクトリや、ファイルを開くためのアプリケーションを設定できます。
_#!/usr/bin/env python3
import subprocess
import os
from operator import itemgetter
dr = os.path.join(os.environ["HOME"], "Pictures")
files = [os.path.join(dr, f) for f in os.listdir(dr)]
latest = sorted([[f, os.path.getmtime(f)] for f in files], key=itemgetter(1))[-1][0]
subprocess.Popen(["xdg-open", latest])
_
open_latest.py
_として保存しますそれを実行します:
_python3 /path/to/open_latest.py
_
最新のファイルはデフォルトのアプリケーションで開かれます。
別のディレクトリを使用するには、行を変更します
_dr = os.path.join(os.environ["HOME"], "Afbeeldingen")
_
例に.
_dr = "/path/to/dir"
_
ただし、Pythonでは機能しない_$HOME
_のようなパスは使用しないでください
デフォルトのアプリケーションの代わりに特定のアプリケーションを使用するには、次の行を変更します。
_subprocess.Popen(["xdg-open", latest])
_
例に.
_subprocess.Popen(["eog", latest])
_
スクリプト:
_$HOME
_ディレクトリ内のPicturesディレクトリを定義します。
_dr = os.path.join(os.environ["HOME"], "Pictures")
_
ファイルを一覧表示します。
_files = [os.path.join(dr, f) for f in os.listdir(dr)]
_
変更日(os.path.getmtime(f)
)でファイルを並べ替え、最新のものを取得します。
_latest = sorted([[f, os.path.getmtime(f)] for f in files], key=itemgetter(1))[-1][0]
_
デフォルトのアプリケーションでファイルを開きます。
_subprocess.Popen(["eog", latest])
_
scanimage
に送信する前に、ファイル名を変数に保存してみませんか。
filename=~/Pictures/$(date +%Y%m%d_%H%M).tiff
scanimage --format=tiff > "$filename" && sleep 5
eog --fullscreen "$filename"
(読みやすくするために複数行に分割しましたが、以前と同じようにコマンドを;
と組み合わせることができます。)