Kirjoittaja Aihe: RATKAISTU: Värin korvaaminen kuvista  (Luettu 3459 kertaa)

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
RATKAISTU: Värin korvaaminen kuvista
« : 06.09.16 - klo:22.53 »
Moi

Tällaisen rimpsun kirjottelin:
Koodia: [Valitse]
find . -name ".png" -exec convert {} -fuzz 10% -fill black -transparent "#BDBDBD" gray-{} \;
find palauttaa kuitenkin ./filename eikä tuo ./ ilmeisesti kelpaa uuden tiedonston nimeksi.
Kuinka nimen saisi ilman ./ ?
« Viimeksi muokattu: 07.09.16 - klo:21.36 kirjoittanut JA5U »

nm

  • Käyttäjä
  • Viestejä: 16252
    • Profiili
Vs: Värin korvaaminen kuvista
« Vastaus #1 : 07.09.16 - klo:11.26 »
Jos kaikki tiedostot ovat yhdessä hakemistossa, onnistuu korvaamalla piste tähdellä:

Koodia: [Valitse]
find * -name "*.png" -exec convert {} -fuzz 10% -fill black -transparent "#BDBDBD" gray-{} \;
Mutta jos joku tiedosto on alihakemistossa, ongelmana on se, että koko polku päätyy kohdetiedoston nimeen, josta tulee gray-alihakemisto/kuva.png. Tällöin tiedoston luonti epäonnistuu, koska hakemistoa gray-alihakemisto ei ole olemassa. Yksi ratkaisu on poistaa kohdetiedoston nimestä hakemistopolku ja pitää vain tiedoston nimi basename-komennon avulla:

Koodia: [Valitse]
find . -name "*.png" -exec sh -c 'convert {} -fuzz 10% -fill black -transparent "#BDBDBD" "gray-$(basename {})"' \;
« Viimeksi muokattu: 07.09.16 - klo:21.11 kirjoittanut nm »

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Vs: Värin korvaaminen kuvista
« Vastaus #2 : 07.09.16 - klo:19.03 »
Siinä mielessä helppo tapaus, että ovat samassa kansiossa.

Jos eivät olisi, niin varmaan siirtäisi - sattuneesta syystä :D

Miten tuo
Koodia: [Valitse]
find * eroaa alkuperäisestä? Man sivuilta ei auennut.

kamara

  • Käyttäjä
  • Viestejä: 2952
    • Profiili
Vs: Värin korvaaminen kuvista
« Vastaus #3 : 07.09.16 - klo:19.10 »
Siinä mielessä helppo tapaus, että ovat samassa kansiossa.

Jos eivät olisi, niin varmaan siirtäisi - sattuneesta syystä :D

Miten tuo
Koodia: [Valitse]
find * eroaa alkuperäisestä? Man sivuilta ei auennut.

Siten, että "." -tarkoittaa kyseistä hakemistoja ja "*" tarkoittaa hakemiston kaikkia tiedostoja.

Eron huomaa seuraavalla:
Koodia: [Valitse]
ls .
ls *

Myös cd:llä voi verrata...
Koodia: [Valitse]
cd .
cd *
« Viimeksi muokattu: 07.09.16 - klo:19.17 kirjoittanut kamara »

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Vs: Värin korvaaminen kuvista
« Vastaus #4 : 07.09.16 - klo:19.49 »
Mutta miten tuosta pitäisi päätellä, että se oleellisesti muuttaa palautettavaa arvoa?

Tässä lopullinen mustasta harmaaksi muutos:
Koodia: [Valitse]
find * -name "*.png" -exec convert {} -resize 24x24 -fuzz 10% -fill "#BDBDBD" -opaque "#000000" gray-{} \;
En ole aivan tyytyväinen  lopputulokseen, koska kuviin jää mustat reuna ikonien ympärille.
Ehkä Gimpistä löytyy jokin toiminto, jolla tehdä eräajoja...

Koodia: [Valitse]
-fuzz 90% poisti kaikki mustat :)
« Viimeksi muokattu: 07.09.16 - klo:20.04 kirjoittanut JA5U »

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11443
    • Profiili
    • Tomin kotisivut
Vs: Värin korvaaminen kuvista
« Vastaus #5 : 07.09.16 - klo:20.15 »
Mutta miten tuosta pitäisi päätellä, että se oleellisesti muuttaa palautettavaa arvoa?

Kun siinä komennossa on piste, niin find etsii työhakemistosta (siis nykyisestä hakemistosta) ja laittaa myös sen hakemiston polun siihen nimeen, siksi ne ovat muotoa "./tiedosto". Kun siinä komennossa on pisteen sijaan tähti (asteriski), niin bash laajentaa sen niin, että find saa kaikkien työhakemistossa olevien tiedostojen ja alihakemistojen nimet argumenteikseen ja siksi se käyttää noita tiedostonimiä. Alihakemistoissa olevat saavat edelleen myös polun eli ne ovat muotoa "alihakemisto/tiedosto" (polku voi olla pidempikin, jos niissä on myös alihakemistoja). En kyllä muista mikä oli yläraja noiden argumenttien määrälle, mutta sekin voisi kai tulla vastaan tuossa laajennuksessa.
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Vs: Värin korvaaminen kuvista
« Vastaus #6 : 08.09.16 - klo:12.18 »
Mutta miten tuosta pitäisi päätellä, että se oleellisesti muuttaa palautettavaa arvoa?

Kun siinä komennossa on piste, niin find etsii työhakemistosta (siis nykyisestä hakemistosta) ja laittaa myös sen hakemiston polun siihen nimeen, siksi ne ovat muotoa "./tiedosto". Kun siinä komennossa on pisteen sijaan tähti (asteriski), niin bash laajentaa sen niin, että find saa kaikkien työhakemistossa olevien tiedostojen ja alihakemistojen nimet argumenteikseen ja siksi se käyttää noita tiedostonimiä. Alihakemistoissa olevat saavat edelleen myös polun eli ne ovat muotoa "alihakemisto/tiedosto" (polku voi olla pidempikin, jos niissä on myös alihakemistoja). En kyllä muista mikä oli yläraja noiden argumenttien määrälle, mutta sekin voisi kai tulla vastaan tuossa laajennuksessa.

Ok, täytyy painaa mieleen.