명령 줄에서 스크립트로 사진 앨범 스캔

분명히 몇 가지 사진 스캔을위한 그래픽 인터페이스, 다양한 옵션을 제공합니다. 하지만 스캔 할 사진의 수가 많고 자동 급지 장치가있는 스캐너가 없으면 상황이 어려워집니다. 일반적으로 스캔하려면 한 번 클릭하고 저장하려면 창의 다른 쪽 끝에서 한 번 더 클릭해야합니다. 시간이 걸립니다. 어쨌든, 사용하기에 좋은 변명 명령 줄.

이는 Rubén의 공헌으로, 주간 대회의 우승자가되었습니다.«Linux에 대해 알고있는 정보 공유«. 축하합니다 Rubén!

나는 기사를 읽었다 김프를 사용한 일괄 이미지 처리 y 터미널에서 이미지를 조작하는 방법, 내 친구 Huguito가 1989 년에했던 여행의 사진 (잃어버린)을 요청한 바로 그 날… 내가 잊은 것.

아이디어는 스크립트를 사용하여 가능한 한 빨리 수행하는 것입니다.

1.- 스캐너에 사진 올리기
2.- 스캔하려면 아무 키나 누르십시오.
3.- 눌린 키가 예를 들어 'n'이 아닌 경우 절차를 반복하십시오.
4.- 사진은 미리 설정된 하위 디렉토리에 저장되고 번호가 매겨집니다.

무슨 명령?

'magic'명령은 SANE의 일부인 scanimage입니다. SANE는 모든 이미징 장치에 대한 표준화 된 액세스를 제공하는 API입니다. Sane API는 공개 도메인에 있으며 소스 코드는 GNU General Public License에 따라 사용할 수 있습니다.

설치가 간단합니다. 각 배포는 패키지를 가져옵니다. Ubuntu (또는 그 파생물)의 경우 시냅틱을 사용하고 sane 및 sane-utils를 설치하는 것으로 충분합니다.

사용하는 방법?

항상 최선의 방법은 터미널 'man scanimage'에 쓰는 것입니다. 그러나 우리가 사용할 옵션을 요약 할 것입니다.

터미널을 열고 scanimage -L을 실행하여 사용 가능한 장치를 확인합니다.

스캔 이미지 -L

제 경우에는 다음을 반환합니다.

`xerox_mfp : libusb : 001 : 005 '장치는 삼성 오리온 다기능 주변기기입니다.

이것이 삼성 SCX-4200 다기능으로 나에게 준 결과입니다. MFP가 있고 장치를 찾을 수없는 경우 프린터가 활성 상태가 아닌지 확인하십시오 (예 : 인쇄 대기 중).

'xerox_mfp : libusb : 001 : 003'값은 -d 옵션을 통해 사용할 장치를 scanimage 명령에 알리는 데 사용됩니다. 스캐너가 하나만 연결된 경우이 옵션은 필요하지 않습니다.

scanimage 명령이 스캔 할 때 결과 이미지를 pnm 또는 tiff 형식의 표준 출력으로 보냅니다. 따라서 스캔을 위해 출력을 파일로 리디렉션합니다. 명령이 제공하는 메시지를 확인하려면 -v 옵션을 추가합니다. 작업 진행률도 확인하려면 -p 옵션을 추가합니다.

scanimage -v -p> image.tiff

scanimage : 1284 비트 / 픽셀에서 1734x24 픽셀 크기의 스캔 이미지
scanimage : RGB 프레임 획득
스캔 이미지 : 최소 / 최대 그레이 레벨 값 = 69/255
scanimage : 총 6679368 바이트 읽기
진행률 : 13.8 %

이미지를 스캔하면 무엇을 얻을 수 있습니까? 명백해 보이지만 명령에 대한 도움을줍니다. 그러나이 명령에는 특이성이 있습니다. 명령에 대한 일반 도움말 끝에 스캐너가 허용하는 특정 매개 변수를 추가하십시오.

scanimage-도움말

사용법 : scanimage [OPTION] ...

BLA bla ....

`xerox_mfp : libusb : 001 : 005 '장치에 특정한 옵션 :

표준:
-해상도 75 | 100 | 150 | 200 | 300 | 600dpi [150] 스캔 한 이미지의 해상도를 설정합니다.
--mode Lineart | Halftone | Gray | Color [Color] 스캔 모드 (예 : Lineart, 단색 또는 컬러)를 선택합니다.
-하이라이트 30..70 % (10 단계) [비활성] 화이트 포인트를 얻기 위해 최소 밝기 선택
--source Flatbed | ADF | Auto [Flatbed] 스캔 소스 (예 : 문서 공급기)를 선택합니다.
기하학:
-l 0..215.9mm (1 단계) [0] 스캔 영역의 왼쪽 상단 x 위치.
-t 0..297.18mm (1 단계) [0] 왼쪽 상단 및 스캔 영역의 위치.
-x 0..215.9mm (1 단계) [215.9] 스캔 영역의 너비.
-y 0..297.18mm (1 단계) [297.18] 스캔 영역의 높이.

''scanimage --help -d DEVICE``를 입력하여 DEVICE에 대한 모든 옵션 목록을 가져옵니다.

사용 가능한 장치 목록 :

xerox_mfp : libusb : 001 : 005

여기에서 사용할 수있는 값으로 옵션을 선택할 수 있습니다.

예 :

해결

– 해결 방법 150

모드

– 모드 색상

이제 기하학. 이것은 스캐너가 한 섹터의 이미지 만 추출하도록 지시 할 수 있고 (사진을 넣을 위치) 나중에 그래픽 편집기를 사용하여 잘라야하는 나머지 표면을 스캔하는 시간을 절약 할 수 있기 때문에 매우 유용합니다. 김프로.

-l 0은 스캐너의 왼쪽 상단 모서리에서 0mm부터 수평으로 스캔을 시작합니다.

-t 0은 스캐너의 왼쪽 상단 모서리에서 0mm부터 수직으로 스캔을 시작합니다.

사진을 스캐너 모서리 [좌표 (0,0)]에 배치하는 것이 더 쉽기 때문에 선택했습니다. 내 스캐너 (A4 크기)에서 l은 0에서 215.9까지, t는 0에서 297.18까지 갈 수 있습니다.

사진의 너비와 높이. 제 경우 사진은 13x18cm입니다.

-x 180 너비

-그리고 130 높이

따라서 우리가 사진을 넣은 부분 만 스캔합니다. 물론 왼쪽, 오른쪽, 너비, 높이, 위쪽 및 아래쪽에 대해 동의한다면. 스캐너를 어떻게 보는지에 따라 다릅니다. 좌표를 테스트하고 필요에 맞게 조정하는 것이 좋습니다.

명령의 예는 다음과 같습니다.

scanimage -d xerox_mfp : libusb : 001 : 003 -p --mode 색상-해상도 150 -l 0 -t 0 -x 180 -y 130> image.pnm

이러한 옵션을 사용하면 이미 스크립트를 작성할 수 있습니다.

하지만 전에 ...

Tiff 또는 pnm는 압축되지 않은 형식이므로 사진은 엄청난 디스크 공간을 차지합니다. 이것은 터미널에서 이미지를 조작하는 방법에 설명 된 ImageMagick 변환 명령이 나오는 곳입니다.

스캐너에서 image.pnm를 가져 오면 jpg로 변환 할 수 있습니다.

image.pnm image.jpg 변환

그러나 그렇게하기 전에 또 다른 트릭 :

Image.pnm는 많은 공간을 차지하므로 image.jpg를 가져온 후 삭제해야합니다. 디스크에서 파일을 가져 오는 대신 표준 입력을 직접 변환하도록 변환 명령에 대한 옵션이 있습니다. 이는 파일 대신 대시로 수행됩니다.

변환-image.jpg

scanimage는 스캔 된 이미지를 표준 출력으로 전달하기 때문에 "파이프 라인"을 만들고 디스크에서 image.pnm 파일을 쓰고 삭제하는 데 걸리는 처리 시간을 절약합니다.

scanimage -d xerox_mfp : libusb : 001 : 003 -p --mode 색상-해상도 150 -l 0 -t 0 -x 180 -y 130 | 변환-image.jpg

이제 예, 스크립트 ...

scan-album.sh를 호출 할 파일에 다음 코드를 작성하고 실행 권한을 부여합니다. 실행하면 스캔 한 사진이있는 하위 디렉토리가 생성됩니다. 필요에 따라 매개 변수 값을 수정하는 것을 잊지 마십시오.

대본 후에 몇 가지 제안을 읽으십시오.

#! / bin / bash
# 옵션 데이터

VERBOSE = ""# 상태 메시지보기 : ""is not; "-v"는 예입니다.
PROGRESS = "-p"# 진행률 표시 ""는 아니오; "-p"는 예입니다.

# 다음 매개 변수는 스캐너의 scanimage --help에서 제공합니다.
# 장치 : 스캐너가 하나만있는 경우 필요하지 않습니다. DEV = ""
# DEV = "xerox_mfp : libusb : 001 : 003"

DEV = ""
MODE = "-모드 색상"
해상도 = "-해상도 600dpi"

#geometry, 예 : 130x180mm 사진
# 왼쪽 상단 정점 스캐너의 위치

x0 = 0
y0 = 0
너비 = 180
높음 = 130

# 옵션 :

L = "-l $ x0"
T = "-t $ y0"
WIDTH = "-x $ 너비"
HIGH = "-및 $ 최고"

# 모든 매개 변수를 함께 :

매개 변수 = "$ DEV $ VERBOSE $ PROGRESS $ MODE $ RESOLUTION $ L $ T $ WIDTH $ HIGH"

# 앨범 이름. 사용자 이름으로 하위 디렉토리를 만듭니다.

ALBUM = "Holidays_1989"

# 보안을 위해 디렉토리가 이미 있으면 아무것도하지 않습니다.

mkdir $ ALBUM

만약 [ "$?" = "1"]; 그때
100 번 출구
fi

# 사진의 기본 이름 (하위 디렉토리)

파일 = "./"$ ALBUM "/"$ ALBUM "_foto_"

function question () {
던졌다 "----------------------------------------------- -------------------------- "
에코
던졌다 "******************************"
echo "스캔 한 사진 수 :" "$ I"
던졌다 "******************************"
echo -e "누르면 n * n 종료 * 스캔 할 다른 키."
에코
read -s -n1 -p "새 사진을 스캔 하시겠습니까?" 키 누름
에코
}

#############################################

# 시작

#############################################

I = xnumx

문제

while [ "$ keypress"! = "n"]; 하다
스캔 할 새 사진 # 개
"I + = 1"
이름 = $ 파일 $ I
scanimage $ 매개 변수 | 변환-$ NAME.jpg
문제

제안

예제에있는 것과 같은 고해상도를 사용하면 스캔 속도가 훨씬 느려집니다.

사진을 종이에 인쇄하려면 인치당 약 250 도트가 필요합니다. 사진을 스캔하는 아이디어가 원본과 같은 크기로 인쇄하는 것이라면 해상도는 250이면 충분하고, 100 인 모니터로보기에 충분하다. 더 높은 해상도는 확대에 도움이됩니다.

각 사진이 오른쪽에 오도록 사진 더미를 미리 준비해야합니다. 이렇게하면 180º 회전하지 않도록 스캐너에 넣는 데 시간을 낭비하지 않습니다.

지오메트리 매개 변수의 측정을 보정 할 때 원본을 어느 위치에 배치해야하는지 관찰하여 디지털 이미지가 "거꾸로"되지 않도록하는 것이 좋습니다. 제 경우에는 사진의 아래쪽 부분이 'l'축을 따라갑니다.

스캐너가 하나만 연결되어있는 경우 -d 옵션을 사용하지 마십시오. 스크립트에서는 DEV =»»입니다.

때때로 "xerox_mfp : libusb : 001 : 003"의 숫자가 변경되며 스크립트를 사용할 때마다 수정해야합니다.

스크립트를 복사 할 때 하이픈과 따옴표를주의하십시오. 하이픈 (빼기 기호)은 옵션에 따라 하나 또는 둘이 될 수 있습니다. 인용 부호는 키보드의 두 배이며 LibreOffice와 같은 일부 워드 프로세서에서 사용하는 것이 아닙니다.

보안을 위해 스크립트는 파일이있는 경우 덮어 쓰지 않도록 디렉터리가 이미있는 경우 디렉터리를 생성하지 않습니다. 이 경우 중지됩니다.

사진 앨범이 오래된 경우 이미지에 머리카락, 주름 또는 킬로가 넘쳐도 후회하지 마십시오.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   주니어스 칼데론

    와! 정말 좋은 tuto!
    bash xD로 그렇게 많은 일을 할 수 있다고 생각하지 않았습니다.
    매일 더 많은 것을 배웁니다!
    입력 주셔서 감사합니다!
    Scaner는 없지만 받으면 즉시 사용해 보겠습니다 🙂

  2.   루브

    이 기여가 내 노트의 디지털화에 얼마나 많은 도움이 될지, 개선되기를 바랍니다. 이미지 magick에 의존하기 때문에 전체 파일을 스캔하고 스캔 된 개체의 크기를 감지하는 기능을 생각하고 있습니다. djvu 또는 pdf로 변환하여 단일 파일을 만듭니다. 글쎄, 난 그냥 방황하고 있었다 기여해 주셔서 대단히 감사합니다.

  3.   아도 엘로

    정말 큰 기쁨입니다. 공유해 주셔서 대단히 감사합니다.