Autor |
Sõnum |
tarmok
Uus kasutaja

Liitunud: 08.02.2007
Postitused: 10

|
postitatud: 10.06.2013, 17:30 postituse pealkiri:
Kahest kataloogist samanimeliste piltide liitmine üheks
|
   |
|
On kaks kataloogi, kummaski 2500 pilti. vaja oleks teha skript, mis võtaks ühe pildi ühest kataloogist, teise pildi teisest kataloogist ja paneks need ppildid kokku üheks pildiks. Ja niimoodi kõigi 2500 pildidga, nii et kokku tekiks 2500 uut pilti, kus kummagi kataloogi pildid on kõrvuti pandud.
Idee:
paremal/pilt00001.jpg
paremal/pilt00002.jpg
paremal/pilt00003.jpg
paremal/pilt00004.jpg
vasakul/pilt00001.jpg
vasakul/pilt00002.jpg
vasakul/pilt00003.jpg
vasakul/pilt00004.jpg
Tulemuseks oleks vaja saada:
kokku/vasakult_paremalt_00001.jpg
kokku/vasakult_paremalt_00002.jpg
kokku/vasakult_paremalt_00003.jpg
kokku/vasakult_paremalt_00003.jpg
Uus pilt on niisiis kaks korda laiem kui vanad, kuna uues on kaks pilti kõrvuti.
mogrify? imagemagick?
Vaatasin siia, aga päris ei saanud aru, mida mina tegema peaks:
Monteerimise näited
|
|
|
|
|
|
|
  |
akbgf
Vana Pingviin


Liitunud: 07.10.2009
Postitused: 763
Asukoht: Tõravere
Distributsioon: OpenSUSE, Ubuntu

|
postitatud: 10.06.2013, 22:23 postituse pealkiri:
(teema puudub)
|
   |
|
Imagemagicku montage teeb töö ära.
montage -tile 2x1 -geometry +1+1 paremal/pilt00001.jpg vasakul/pilt00001.jpg kokku/vasakul_paremal_00001.jpg
Tulemusfaili nime pead skriptis tekitama.
|
|
|
|
|
|
|
   |
tarmok
Uus kasutaja

Liitunud: 08.02.2007
Postitused: 10

|
|
|
  |
tarmok
Uus kasutaja

Liitunud: 08.02.2007
Postitused: 10

|
|
|
  |
tarmok
Uus kasutaja

Liitunud: 08.02.2007
Postitused: 10

|
postitatud: 11.06.2013, 12:02 postituse pealkiri:
(teema puudub)
|
   |
|
tarmok kirjutas: < Vali > < Laienda > |
Proovisin stiilis
<--
montage -tile 2x1 -geometry +1+1 paremal/*.jpg vasakul/*.jpg kokku/kokku_%05d.jpg
-->
Aga see ei teinud seda, mis vaja. See käis läbi esmalt ühe kataloogi, siis teise kataloogi ja kleepis pildid kokku küll, kuid valesti. Mul oleks vaja, et kindalt oleks alati paaris erinevatest kataloogidest võetud täpselt samanimelised failid, mitte aga samast kataloogist võetud järjestikused failid. |
Võtsin ette failide ümbernimetamise. Ühe kataloogi failidele lisain faili nime lõppu tähe "a". Seejärel kopeerisin failid kokku ühte kataloogi ja monteerisin nad siis kokku ühest kataloogist. Käsk, mille andisn, oli stiilis
<--
montage -tile 2x1 -geometry +1+1 paremal/*.jpg paremal/*.jpg kokku/kokku_%06d.jpg
-->
Aga selle skriptiga tekkis see häda, et ta kukkus lihtsalt kokku. Ilmselt seepärast, et masinal sai mälu otsa, enne kui töötlus lõpule jõudis. Kümne pildi korral tegi töö ilusti ära, samuti saja pildi korral. Aga kolmsada pilti selliselt luua oli juba liig: ühel hekel tuli ekraanile "Killed" - ja ühtki pilti ei tekkinud. Aga mul on pilte kokku 2x2500=5000
Ilmselt peaks saavutama, et skript töötaks kenasti tsüklis nii, et samm-sammult keebitaks kakshaaval pilte kokku ja et ei üritataks kõiki pilte mällu võtta ja siis kokku panema hakata...
|
|
|
|
|
|
|
  |
Valdur55
Vana Pingviin


Vanus: 30
Liitunud: 02.06.2007
Postitused: 640
Asukoht: Tartu
Distributsioon: *buntu

|
|
|
   |
akbgf
Vana Pingviin


Liitunud: 07.10.2009
Postitused: 763
Asukoht: Tõravere
Distributsioon: OpenSUSE, Ubuntu

|
postitatud: 11.06.2013, 15:10 postituse pealkiri:
(teema puudub)
|
   |
|
Proovi midagi niisugust, ehk hakkab tööle:
-------------
#!/bin/bash
for j in {1..9}
do
{montage -tile 2x1 -geometry +1+1 paremal/pilt0000$j.jpg vasakul/pilt0000$j.jpg kokku/pilt_0000$j.jpg
}
done
------
Kui nii saab esimesed 9 tehtud, siis
for j in {10..99}
do ..
teeb edasi ja
for j in {100..999} aitab edasi.
Võibolla pead täielikke aadresse kasutama
/usr/bin/montage
/home/???/paremal/pilt??? jne
|
|
|
|
|
|
|
   |
tarmok
Uus kasutaja

Liitunud: 08.02.2007
Postitused: 10

|
postitatud: 11.06.2013, 15:56 postituse pealkiri:
(teema puudub)
|
   |
|
Valdur55 kirjutas: < Vali > < Laienda > | Kood: < Vali > < Laienda > |
#!/bin/bash
for q in `seq 0 2`;
do
for w in `seq 0 9`;
do
for e in `seq 0 9`;
do
for r in `seq 0 9`;
do
#Siia alla tuleb montage käsk
nr=0$q$w$e$r
echo $nr
montage -tile 2x1 -geometry +1+1 paremal/pilt$nr.jpg vasakul/pilt$nr.jpg kokku/vasakul_paremal_$nr.jpg
#Lõpetab programmi 2500 peal
if [ $nr -eq 02500 ]
then
exit
fi
done
done
done
done
|
See arvu kujunemine meenutab auto spidomeetrit. Kui viimane liigub 9 -> 0 peale, siis liigub järgmine ühe sammu võrra suuremaks.
Ma ei viitsi 00000 seisu kontrollima hakkata. 00000 korral montage viskab teade, et faili pilt00000.jpg ei leitud. |
Super! See skript tegi töö täpselt nii nagu vaja ära. Ei mingit jama, samm-sammult käidi kataloogid läbi kuni 2455 failini.
Lihtsalt
Kood: < Vali > |
if [ $nr -eq 02455 ]
|
rida tuli panna õigeks, et õiges kohas lõpetaks. Ja igatahes minul küll ei olnud probleemi ka pilt00000.jpg korral. Veatult ja õige asi. Seda skripti võib nüüd vastavalt vajadusele modifitseerida: kui numbrikohti on rohkem, siis tsükleid juurde kirjutada ja asi töötab. Suured tänud!
|
|
|
|
|
|
|
  |
illukas
Vana Pingviin

Vanus: 44
Liitunud: 24.10.2006
Postitused: 2036

|
|
|
   |
|