Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?


Zaloguj się podając nazwę użytkownika, hasło i długość sesji

Polskie Forum Użytkowników GIMP-aDodatkiPluginy i Script-FuWątek: Automatyzacja przygotowywania ilustracji do Worda
Strony: [1]
DrukujPobierz PDF
Autor Wątek: Automatyzacja przygotowywania ilustracji do Worda  (Przeczytany 6698 razy)
0 użytkowników i 1 Gość przegląda ten wątek.
LukaszK
Nowicjusz

Reputacja: 0 Offline Offline

Wiadomości: 3
Galeria Użytkownika

LukaszK


Zobacz profil
« : 23.05.2017, 14:11:31 »

Cześć wszystkim. Jestem Łukasz i pracuję z GIMPem w bardzo powtarzalny sposób. Kadruję i zmieniam wielkość zdjęć przed wstawieniem do raportu w MS Office. Chcę to sobie zautomatyzować. Próbowałem użyć Batch Image Manipulation Plugin i Batch Script Composer.

Skrypt, który chciałbym zrealizować miałby działać następująco:
1. Polecenie "Crop" w którym "aspect ratio" jest już wybrane jako 1:1.
Przy czym chciałbym ręcznie wybrać obszar na zdjęciu do skadrowania. Batch Image Manipulation Plugin po prostu obcina zdjęcie do zadanego kadru. Jak mogę to zrobić?
2. Polecenie "Levels"
Batch Image Manipulation Plugin po prostu robi "Auto levels", co skutkuje komicznymi barwami. Jak mogę ustawić ręczną korekcję na każdym zdjęciu?
3. Polecenie "Scale Image"
Zmiana DPI na 300 i szerokości na 921px. To działa dobrze.
4. Opcja "Rename with pattern" To działa dobrze.
5. Zapisywanie do .jpg działa dobrze, ale jak mam ustawić kompresję pliku?

Byłbym zobowiązany, gdyby ktoś mógłby mi pomóc. Pozdrawiam.

Dodano 25/05/2017:
Poszukałem jeszcze i wygląda na to, że nie za bardzo jest to możliwe.
Automatyzację osiągnąłem przez otwarcie wszystkich plików i stworzenie ustawień "Preset" dla opcji "Crop". Mam mysz wieloprzyciskową, więc podepnę komendę pod jeden z przycisków. Po manualnych zmianach (i ewentualnej korekcji poziomów) mogę odpalić Batch plugin i wszystko działa.

Pozdrawiam,
Łukasz
« Ostatnia zmiana: 22.12.2017, 15:27:01 wysłane przez LukaszK » Zapisane
LukaszK
Nowicjusz

Reputacja: 0 Offline Offline

Wiadomości: 3
Galeria Użytkownika

LukaszK


Zobacz profil
« Odpowiedz #1 : 13.07.2017, 08:36:52 »

Cześć,

Poprzednie rozwiązanie nie było szczególnie efektywne. Douczyłem się Python i napisałem plug-in, który umożliwia automatyczne zapisanie obrazka dociętego do złotej proporcji w podkatalogu /mod.


Kod:
#!/usr/bin/env python

# Tutorial available at: https://www.youtube.com/watch?v=nmb-0KcgXzI
# Feedback welcome: jacksonbates@hotmail.com

from gimpfu import *
from os.path import *
import os

def lukasz_workflow1(image, drawable):
    # function code goes here...
    try:
      os.stat(os.path.dirname(image.filename) + "\\mod\\")
    except:
      os.mkdir(os.path.dirname(image.filename) + "\\mod\\")
    pdb.gimp_image_set_resolution(image, 300, 300)
    pdb.gimp_image_scale(image, 924, 572)
    pdb.file_jpeg_save(image, drawable, os.path.dirname(image.filename) + "\\mod\\" + os.path.splitext(basename(image.filename))[0] + ".jpg", os.path.dirname(image.filename) + "\\mod\\" + os.path.splitext(basename(image.filename))[0] + ".jpg", 0.5, 0.1, 1, 1, 'Lukasz Kukolowicz', 2, 1, 0, 2)
   
    try:
      os.stat(os.path.dirname(image.filename) + "\\mod\\")
    except:
      os.mkdir(os.path.dirname(image.filename) + "\\mod\\")

   
register(
    "python-fu-lukasz-workflow1",
    "Prepares files for report",
    "Prepares files for report",
    "Lukasz Kukolowicz", "Lukasz Kukolowicz", "2017",
    "7.8 x 4.8 cm",
    "*",
    [
        (PF_IMAGE, "image", "takes current image", None),
        (PF_DRAWABLE, "drawable", "Input layer", None)
    ],
    [],
    lukasz_workflow1, menu="<Image>/Automation")  # second item is menu location

main()

i drugi, który nie zmienia liczby pikseli, tylko przestawia DPI obrazka:

Kod:
#!/usr/bin/env python

# Tutorial available at: https://www.youtube.com/watch?v=nmb-0KcgXzI
# Feedback welcome: jacksonbates@hotmail.com

from gimpfu import *
from os.path import *
import os

def lukasz_workflow5(image, drawable):
    # function code goes here...
    try:
      os.stat(os.path.dirname(image.filename) + "\\mod\\")
    except:
      os.mkdir(os.path.dirname(image.filename) + "\\mod\\")
   
    width = pdb.gimp_image_width(image)
    DPI = width * 25.4 / 78.25
   
    pdb.gimp_image_set_resolution(image, DPI, DPI)
    # pdb.gimp_image_scale(image, 921, 921)
    pdb.gimp_message(DPI)
    pdb.file_jpeg_save(image, drawable, os.path.dirname(image.filename) + "\\mod\\" + os.path.splitext(basename(image.filename))[0] + ".jpg", os.path.dirname(image.filename) + "\\mod\\" + os.path.splitext(basename(image.filename))[0] + ".jpg", 0.5, 0.1, 1, 1, 'Lukasz Kukolowicz', 2, 1, 0, 2)
   
    try:
      os.stat(os.path.dirname(image.filename) + "\\mod\\")
    except:
      os.mkdir(os.path.dirname(image.filename) + "\\mod\\")

   
register(
    "python-fu-lukasz-workflow5",
    "Prepares files for report",
    "Prepares files for report",
    "Lukasz Kukolowicz", "Lukasz Kukolowicz", "2017",
    "Change width to 7.8, no resize",
    "*",
    [
        (PF_IMAGE, "image", "takes current image", None),
        (PF_DRAWABLE, "drawable", "Input layer", None)
    ],
    [],
    lukasz_workflow5, menu="<Image>/Automation")  # second item is menu location

main()

Może komuś się przyda Uśmiech
Zapisane
be@
Moderator globalny

Reputacja: 49 Offline Offline

Płeć: Kobieta
GIMP: 2.8
Licencja: CC-BY
Wiadomości: 7 403
Galeria Użytkownika



Zobacz profil
« Odpowiedz #2 : 13.07.2017, 09:25:08 »

Zmiana DPI bez zmiany liczby pikseli nie ma sensu. To będzie tylko sztucznie podbite DPI, a w wydruku wyjdzie prawie tak samo, jakby pozostało oryginalne.
W skrypt się nie wczytywałam, bo na skryptowaniu się nie znam, więc może coś źle zrozumiała z tym DPI, ale jest ono ściśle powiązane z wymiarami w px.
Zapisane
LukaszK
Nowicjusz

Reputacja: 0 Offline Offline

Wiadomości: 3
Galeria Użytkownika

LukaszK


Zobacz profil
« Odpowiedz #3 : 13.07.2017, 09:53:30 »

Co do DPI to się zgodzę. Używam tego w specyficznym zastosowaniu i interesuje mnie tylko plik cyfrowy. W moim przypadku obraz ma 1200 pikseli szerokości, a więc
Kod:
DPI = width * 25.4 / 78.25
DPI = 387 przy czym zachowuję wszystkie szczegóły, na czym najbardziej mi zależy. Oczywiście 78.25 mm to szerokość, jaką chcę żeby obraz zajmował w raporcie. Pozwala to wstawić dwie ilustracje obok siebie.

Jesli komuś zależy na ustawieniu dokładnie 300DPI to należy w pierwszym skrypcie dostosować sobie wymiary obszaru
Kod:
pdb.gimp_image_scale(image, 924, 572)

Zapisane
Strony: [1]
DrukujPobierz PDF
Polskie Forum Użytkowników GIMP-aDodatkiPluginy i Script-FuWątek: Automatyzacja przygotowywania ilustracji do Worda
Skocz do: