GIMP를 사용하여 이미지의 레벨을 균일하게 보정(Pythn-Fu)

13141 단어 GIMPPython
GIMP에서 Python-Fu를 사용하여 특정 디렉토리의 이미지 파일을 일관된 수준으로 수정했습니다.스크립트를 짜맞추는 데 시간이 많이 걸렸기 때문에 필기로 남겨 두었다.

사용법


GIMP를 시작하려면 다음 메뉴를 선택합니다.
  • 필터→Python-Fu→콘솔
  • 파이썬 콘솔을 표시합니다.이것은 일반 파이톤의 REPL과 같지만 GIMP의 프로그램 라이브러리가 읽힌 상태에서 시작합니다.
    ※ 엑셀의 VBA를 아는 사람들은 이미디에트페온과 같은 물건이라고 생각하면 이해하기 쉽다.
    이번에는 스크립트에 로그인하지 않고 바로 실행합니다.다음 코드를 복사합니다.
    ※ 적절한 편집gamma 또는path.
    import os, glob
    gamma = 0.3  # 0.1(濃) - 10(薄)
    path = "C:\\test"
    outdir = os.path.join(path, "output")
    if not os.path.exists(outdir):
        os.mkdir(outdir)
    
    for jpg in glob.glob(os.path.join(path, "*.jpg")):
        img = pdb.gimp_file_load(jpg, "")
        disp = pdb.gimp_display_new(img)
        pdb.gimp_levels(img.active_drawable, 0, 0, 232, gamma, 0, 255)
        newjpg = os.path.join(outdir, os.path.basename(jpg))
        pdb.gimp_file_save(img, img.active_layer, newjpg, "")
        pdb.gimp_display_delete(disp)
    
    프롬프트를 붙여 넣으면 프롬프트가 ...로 바뀌어 입력해야 하지만 아무 것도 입력하지 않고 Enter 키를 눌러 닫힌 블록을 시작합니다.pdb.gimp_levels()를 다른 처리로 바꾸면 다양한 응용이 가능하다.

    처리하다.


    아까의 예에서 실제 등급 수정을 진행한 것은 다음 줄이다.
    pdb.gimp_levels(img.active_drawable, 0, 0, 232, gamma, 0, 255)
    
    여기로 바꾸면 다른 처리도 가능해요.몇 가지 예를 보여 주다.

    영역 선택

    pdb.gimp_rect_select(img, 0, 0, 1500, 2200, 2, False, 0)
    
    이후 레벨 수정 등을 하면 이미지의 일부만 가공할 수 있다.

    크기 조정

    pdb.gimp_image_scale_full(img, 256, 256, 3)
    

    자르다

    pdb.gimp_image_crop(img, 1420, 2180, 130, 130)
    

    GIF에서 변환


    GIF 파일을 열고 JPEG 파일에 저장된 예로 가로로 정렬합니다.종횡비를 유지하다.색상 모드를 RGB로 변환해야 합니다.
    width = 1048
    for gif in glob.glob(os.path.join(path, "*.gif")):
        img = pdb.gimp_file_load(gif, "")
        disp = pdb.gimp_display_new(img)
        pdb.gimp_image_convert_rgb(img)
        pdb.gimp_image_scale_full(img, width, img.height * width / img.width, 3)
        newjpg = os.path.join(outdir, os.path.basename(gif)[:-3]+"jpg")
        pdb.gimp_file_save(img, img.active_layer, newjpg, "")
        pdb.gimp_display_delete(disp)
    

    열린 이미지


    열린 그림을 대량으로 처리하면 다음과 같습니다.
    for img in gimp.image_list():
        pdb.gimp_levels(img.active_drawable, 0, 0, 232, gamma, 0, 255)
    

    비결


    파이썬의 사용 방법에 대해서는 대상dir(pdb) 등에 대해 표시할 수 있다.이렇게 하면 파이썬 컨트롤러에서 '참고' 단추를 누르면 표시되는 과정 브라우저에서 찾을 수 있습니다.
    ※ 이 근처 파이톤의 사용 편의성을 다소 알고 있기 때문에 스크립트-Fu가 아닌 파이톤-Fu를 사용했습니다.

    함수 찾기 방법


    평균치라지만dir()에 나오는 함수가 너무 많아서 함수 이름에서 기능을 바로 떠올리지 못하는 경우가 많다.엑셀처럼 매크로 기록을 통해 얻을 수 있다면 쉬울 텐데 그럴 수는 없을 것 같아요.
    그래서 간접적이긴 하지만 매뉴얼에서 찾는 방법을 소개하겠다.
  • GIMP(GNU 이미지 편집자)
  • 원하는 기능 페이지를 먼저 찾겠습니다.예를 들어, 이미지의 확대/축소(크기 조정)일 경우 다음 페이지가 됩니다.
  • https://docs.gimp.org/ja/gimp-tool-scale.html
  • URL을 보면 scale이라는 단어를 볼 수 있기 때문에 프로세스 브라우저에서 검색하면 알아맞힐 수 있습니다.

    매개 변수


    참고서를 읽어도 구체적으로 어떤 수치가 나올지 모르는 상황에서 GUI와 비교하면서 고민했다.

    참고 자료


    Pythn-Fu를 시작하여 파일을 여는 예가 있습니다.
  • 편리한 Pythn-Fu 입문-Gimp
  • 이번에는 사용하지 않았습니다. JPEG 저장 시 매개변수를 지정하는 설명입니다.GIMP뿐만 아니라 jpeglib의 소스도 찾아봤어요.

  • Discretized Spiritualities: Gimp의 file-jpeg-save 매개 변수 2011.04.30
  • 이것은 이미지를 통일적으로 처리하는 일련의 절차를 설명한 문장이다.자료가 매우 적은 상황에서, 나는 시행착오를 통해 각본을 구성하는 노력이 상당히 크다고 추측했다.

  • 책의 전자화를 보조하기 위해 기프와 pythn-fu를 사용했다오일러의 일기 2010.11.18

  • 문제집에서 인쇄를 하기 위해 Gimp와pythn-fu를 사용했습니다오일러의 일기 2013.11.16
  • 파이톤의 디렉토리 및 파일 처리 방법은 다음 내용을 참조합니다.

  • Pythhon: 지정된 경로 디렉토리의 파일 목록 내보내기 2008.08.09

  • [Pythhon] 파일/디렉토리 작업 2015.12.26
  • 파이썬-Fu를 사용하기 시작했을 때의 트위터입니다.
    필터 → Pyhon-Fu → 콘솔 for in gimp를 GIMP 통합 수준으로 수정합니다.image_list(): pdb.gimp_levels( https://t.co/Si5Ju30oXV _drawable,00232,0.40255)-칠잡지(@7shi)2016년 7월 26일.
    GIMP로 열린 이미지와 함께 동일한 크기를 선택합니다.image_list(): pdb.gimp_rect_select(0015002200,2False,0) 이후 드래그법으로 수동으로 조정 - 7잡지(@7shi)2016년 7월 26일.

    좋은 웹페이지 즐겨찾기