Tervetuloa kameralaukkuun!

Pääset mukaan keskusteluihin rekisteröitymällä.
Register Now

Helppo ja nopea resize

Keskustelu osiossa 'Kuvankäsittelynurkkaus' , aloittajana AnselA, 21 Elokuu 2014.

  1. AnselA

    AnselA Active Member

    8 534
    4
    36
    Onhan noita kuvan koon muuttamisen työkaluja vaikka kuinka. Mutta halusin, että Win työpöydälläni on ikoni, jolle voi raahata Explorerista kuvan tai hakemiston, ja tuloksena on JPG webbikuvia (suurin sivu max 1024 pix). Nopeasti ja heleposti.

    1. Asensin imagemagic:n http://www.imagemagick.org/download/binaries/ImageMagick-6.8.9-7-Q16-x64-dll.exe (64 bit versio, joka käsittelee kuvat 16 bittiä/kanava. 32 bit versiokin tuolta löytyy.)

    2. Tein työpöydälle tiedoston resize1024.bat, jonka sisältö on:

    @echo off

    REM
    REM resize a file or files in a directory to max 1024 pixels
    REM

    rem Loops through arguments. If a file converts it to a jpg.  If a directory
    rem converts files in that directory to jpgs.  Assumes a program "convert".

    set count=0
    for %%a in (%*) do (
      if exist %%a (
        if exist %%a\ (
          rem Directory, loop through contents
          for %%f in (%%a\*) do (
            convert "%%f" -resize 1024x1024 "%%~a\%%~nf.jpg"
            set /a count+=1
          )
        ) else (
          rem File, just convert
          convert "%%~a" -resize 1024x1024 "%%~na.jpg"
          set /a count+=1
        )   
      ) else (
        echo Skipping non-existent %%~a
      )
    )

    echo Converted %count% files

    pause

    ----

    Jos haluaa jonkin muun kokoisia kuvia niin vaihtaa (2 kpl) -resize 1024x1024 joksikin muuksi. Huom. 1024 x 1024 ei toimi! Ks. imagemagic -dokut.

    Jos originaali on JPG niin skripti tallentaa pienennetyn kuvan alkuperäisen päälle!!!
     
  2. jhalmu

    jhalmu Active Member

    8 551
    3
    38
    Vs: Helppo ja nopea resize

    Imagemagic on aika ihku. Joskus PHP:n kautta tullu kuvia pyöriteltyä.
     
  3. Pan

    Pan Well-Known Member

    2 607
    1 320
    113
    Vs: Helppo ja nopea resize

    Pieni ongelma on siinä, että moniin palveluihin on eri kokoiset korkeus ja leveysrajoitukset. Eli scriptiä pitääkin muokata ehdolliseksi siten, että sille voisi antaa korkeuden ja leveyden ylärajan riippuen siitä onko kyseessä pysty-vai vaakakuva. Eli kumpikaan yläraja ei saisi ylittyä, mutta suurempi vaihtoehto toteutuisi.

    En ole tuota softaa tutkaillut enkä nyt kerkeä miettiä miten asian voisi tällä hoitaa. Mutta pienillä kuvamäärillä voi tietty käyttää eri hakemistoa vaaka- ja pystykuville. Ja eri skriptiä
     
  4. AnselA

    AnselA Active Member

    8 534
    4
    36
    Vs: Helppo ja nopea resize

    Jos ymmärsin mitä tarkoitat niin tuo toimii juuri niin.  Kuvaa pienennetään niin, että pidempi sivu on 1024 pikseliä, oli se sitten vaaka- tai pystysivu. Sivusuhdetta ei muuteta, joten lyhyempi sivu määräytyy sen mukaisesti.

    Tavoitteeni oli ettei mitään parametreja tarvitse antaa.

    Lisään tuohon vielä kevyen terävöityksen ja muutaman metatiedon lisäämisen, mm. (c) ym. Mutta skriptiä saa ihan vapaasti puukottaa mieleisekseen. Esim. jos piennetyn kuvan nimeää eri tavalla niin alkup. JPG:kin säilyy. Next version.
     
  5. AnselA

    AnselA Active Member

    8 534
    4
    36
    Vs: Helppo ja nopea resize

    Next version, vaatii myös exiftool -asennuksen ja template/kuvatiedoston luomisen (1x1 pikselin JPG riittää). Lisää kuvaan myös metatietoja. Koodi on itsensädokumentoiva ;P

    ----

    @echo off

    REM
    REM Quick resize of image file(s). Save this file on your Windows desktop
    REM and drag & drop file or folders on the icon.
    REM You need to install imagemagic and exiftool first.
    REM
    REM ORF files will produce a WARNING, just ignore it.
    REM

    REM set DEBUG=TRUE

    REM --- exiftool folder ---
    set EXIFTDIR=c:\utl\exiftool\
    set PATH=%PATH%;%EXIFTDIR%

    REM --- target pixel resolution ---
    REM set MAX=800
    set MAX=1024
    REM set MAX=2048

    set TAG=-wh%MAX%

    @echo ------------------------------
    @echo --- Resizing to max %MAX% pixs
    @echo ------------------------------

    set name=Etu Sukunimi
    set copyright=(c) <EMAIL email="Etu.Sukunimi@domain.fi"]Etu.Sukunimi@domain.fi</EMAIL>
    set title=Photographer
    set usageterms=All rights reserved

    set country=Finland
    set region=Kameralaukku
    set city=EiTietoa
    set zip=715517
    set street=Katu
    set email=<EMAIL email="Etu.Sukunimi@domain.fi"]Etu.Sukunimi@domain.fi</EMAIL>
    set phone=+358-00-12345678

    copy %EXIFTDIR%1x1pix.jpg %EXIFTDIR%IPTC-template.jpg >t

    REM Loops through arguments. If a file converts it to a jpg.  If a directory
    REM converts files in that directory to jpgs.  Assumes a program "convert".

    set count=0
    for %%a in (%*) do (
      if exist %%a (
        if exist %%a\ (
          rem Directory, loop through contents
          for %%f in (%%a\*) do (

              call :setmetadata

    REM for debugging ----------------------------------------------------------------------------------
    if defined DEBUG (
    echo -------------------------------------------------------------------------
              exiftool.exe %EXIFTDIR%IPTC-template.jpg
    echo -------------------------------------------------------------------------
              )
    REM for debugging ----------------------------------------------------------------------------------

              exiftool.exe -quiet -TagsFromFile "%%~f" %EXIFTDIR%IPTC-template.jpg
              convert "%%f" -resize %MAX%x%MAX% -unsharp 1.5x1+0.7+0.02 "%%~a\%%~nf%TAG%.jpg"
              exiftool.exe -quiet -TagsFromFile %EXIFTDIR%IPTC-template.jpg -overwrite_original -P "%%~a\%%~nf%TAG%.jpg"
              set /a count+=1

              @echo    %%~nf%TAG%.jpg
              @echo ---

          )
        ) else (
         
          echo --- Just convert ONE file ---

              call :setmetadata

    REM for debugging ----------------------------------------------------------------------------------
    if defined DEBUG (
    echo -------------------------------------------------------------------------
              exiftool.exe %EXIFTDIR%IPTC-template.jpg
    echo -------------------------------------------------------------------------
              )
    REM for debugging ----------------------------------------------------------------------------------

              exiftool.exe -quiet -TagsFromFile "%%~a" %EXIFTDIR%IPTC-template.jpg
              convert "%%~a" -resize %MAX%x%MAX% -unsharp 1.5x1+0.7+0.02 "%%~na%TAG%.jpg"
              exiftool.exe -quiet -TagsFromFile %EXIFTDIR%IPTC-template.jpg -overwrite_original -P "%%~na%TAG%.jpg"

              set /a count+=1

              @echo --- %%~na%TAG%.jpg SINGLE

        )   
      ) else (
        echo --- Skipping non-existent %%~a
      )
    )

    echo Converted %count% files
    echo --- DONE
    del t
    pause
    exit

    REM SUBROUTINE ---------------------------
    :setmetadata

              exiftool.exe -quiet -all= %EXIFTDIR%IPTC-template.jpg
              exiftool.exe -Artist="%name%" -overwrite_original -P -quiet %EXIFTDIR%IPTC-template.jpg
              exiftool.exe -Copyright="%copyright%" -overwrite_original -P -quiet %EXIFTDIR%IPTC-template.jpg
              exiftool.exe -CopyrightNotice="%copyright%" -overwrite_original -P -quiet %EXIFTDIR%IPTC-template.jpg
              exiftool.exe -CopyrightFlag=True -overwrite_original -P -quiet %EXIFTDIR%IPTC-template.jpg
              exiftool.exe -UsageTerms="%usageterms%" -overwrite_original -P -quiet %EXIFTDIR%IPTC-template.jpg
              exiftool.exe -Creator="%name%" -overwrite_original -P -quiet %EXIFTDIR%IPTC-template.jpg
              exiftool.exe -ImageDescription="X" -overwrite_original -P -quiet %EXIFTDIR%IPTC-template.jpg
              exiftool.exe -MakerNotes="X" -overwrite_original -P -quiet %EXIFTDIR%IPTC-template.jpg
              exiftool.exe -Title="X" -overwrite_original -P -quiet %EXIFTDIR%IPTC-template.jpg
              exiftool.exe -Subject="X" -overwrite_original -P -quiet %EXIFTDIR%IPTC-template.jpg

    exit /b
     
  6. Pan

    Pan Well-Known Member

    2 607
    1 320
    113
    Vs: Helppo ja nopea resize

    Et ihan ymmärtänyt mitä tarkoitin. Joten muokkasin hieman tuota ekaa versiota siten, että nuo "1024*1024" korvasin "1920*1080" arvoilla esim. FullHD:n mukaisiksi. Ja laitoin yhden echon lisää, jotta ikkunassa näkyisi, että jotain tapahtuu. Tässä pieni testiloki:
    [QUOTE>
    [/QUOTE]
    Kunkin rivin loppuun olen lisännyt manuaalisesti mistä mihin muunnos tapahtui

    Next-versiossa saman voi tehdä korvaamalla muuttujan MAX kahdella uudella eli VMAX (vaakamaksimi) ja HMAX (pystymaksimi). Lisäksi huomasin sellaisen pienen ongelman W7:ssä, että set-komennossa ei saa olla välilyöntejä, esim. C:\Program Files\. W8:lla en ole voinut mökillä kokeilla.
    Ja jotain ongelmaa oli myös metadatan päivityksessä, copyright oli ainoa joka päivittyi. Pitäiskö tuo 1x1pix.jpg tehdä tyhjällä metadatalla?
     
  7. AnselA

    AnselA Active Member

    8 534
    4
    36
    Vs: Helppo ja nopea resize

    Kun windows:ssa sallittiin välilyönnit poluissa, se aiheutti "ylimääräistä" päänvaivaa skripteissä. set X="C:\Program Files" toimii. Minä olenkin asentanut exiftool:n ym apuohjelmia c:\utl -polkuun...

    Tuohon convert -komentoon voi lisätä -verbose niin saa yksityiskohtaista tietoa.

    Tässä käyttämäni 1x1pix.jpg
     

    Liitetyt tiedostot:

  8. Pan

    Pan Well-Known Member

    2 607
    1 320
    113
    Vs: Helppo ja nopea resize

    Tuo 1x1pix.jpg on samanlainen kuin mulla. Mutta kun mä nykyisin asetan metadatan LR:n importissa, niin sitä ei tarvi enää päivittää tässä vaiheessa.
     
  9. AnselA

    AnselA Active Member

    8 534
    4
    36
    Vs: Helppo ja nopea resize

    Tämä mun käyttö on kuville, joita ei viedäkään LR:iin. Otetaan kuva, pienennetään, spostin liitteeksi tai nettiin ja delete...