e-Okul İçin Toplu Fotoğraf Düzenleme

komutun sonunda kırp.bmp yazdığınız için isimleri kırp olarak yeniden adlandırıyor, fakat bu işlemi *.jpg’ koşulunu sağlayan birden fazla dosya olduğu için kırp-1, kırp-2 diye adlandırıyor. Her biri orjinal adını korusun derseniz convert işlemini for’un içinde yapabilirsiniz.

Sizin kodunuz için bakacak olursak şu şekilde oluyor:

hedef_dizin="hedef";
mkdir $hedef_dizin;
for file in *.jpg;
do
    convert "$file" -crop 1463x1881+35+100 "$hedef_dizin/${file%.jpg}.bmp";
    convert "$hedef_dizin/${file%.jpg}.bmp" -resize 133x171 "$hedef_dizin/${file%.jpg}.bmp";
    mv "$hedef_dizin/${file%.jpg}.bmp" "$hedef_dizin/$file";
done    

kaynak_dizin’deki jpg dosyalarını hedef_dizin’e kopyalar ve istenen işlemleri gerçekleştirir.

Not: “.” şu an bulunduğunuz dizin demektir.

Bu kodu bir sh dosyası içerisine yapıştırıp kullanabilirsiniz veya tek satırda yazarak terminalden çalıştırabilirsiniz.

Kodların açıklaması
convert "$file" -crop 1463x1881+35+100 "$hedef_dizin/${file%.jpg}.bmp";

satırı dönüştürülen dosyayı direk hedef dizine koyar.

convert "$hedef_dizin/${file%.jpg}.bmp" -resize 133x171 "$hedef_dizin/${file%.jpg}.bmp";

dönüştürüldükten sonra hedef dizine koyulan dosyayı yeniden boyutlandırır.

mv "$hedef_dizin/${file%.jpg}.bmp" "$hedef_dizin/$file"; 

satırı hedef dizindeki dosyanın ismini .jpg olarak değiştirir.

1 Beğeni

Teşekkürler, biraz daha uzun yoldan formülleri buldum ama bu çok daha kısa ve kolay.
Bunu da inceleyeceğim bu for konusunu daha iyi öğrenmek için.
Başında elle yapmam gereken işlemleri de kodla yazdırmak fikri aklıma geldi. Bunun için @mustifanci hocamla irtibata geçtik. Üzerinde çalışacağız.
Bitince sh olarak yüklerim buraya inşallah.

3 Beğeni

Komutların çalışması için imagemagick programının kurulu olması şart mı? Yazdığımız sh dosyasını tamamladık ama açıklama ile paylaşayım dedim. Şartsa ona göre bunu da açıklamaya ekleyeceğim.

Evet, convert komutu imagemagick paketi ile geliyor.

1 Beğeni

Bu konu için bir sh dosyası yazdık. Bunu nasıl yükleyeceğim foruma? Yükle kısmından izin vermiyor.

Direk sh dosyası içeriğini yükleyebilirsiniz veya google drive gibi bir bulut’a yükleyip paylaşabilirsiniz.

GitHub, GitLab veya AKKP Kod üzerinde paylaşıp burada bağlantı paylaşabilirsiniz.

Tek dosyalık kodlarınız için Github Gist veya kod.pardus.org.tr’deki “Parçaçıklar (Snippets)” kullanabilirsiniz.

2 Beğeni

Şimdilik google drive’dan link verdim ama google drive bu iş için doğru yer değil ki, kişiler kendi drive hesaplarındaki dosyaları düzenlerlerken silebilirler.

GitHub, GitLab veya AKKP Kod sitelerine de baktığım kadarıyla sanki ücretli siteler. Sürekli bu işle uğraşmayan klasik kullanıcılara gereksiz olur.

Açıkçası forumda eklenebilecek dosya türlerine en azından sh da eklense daha güzel olurmuş.

@edge35 ve @mustifanci’nin yardımlarıyla kodları yazıp sh oluşturduk çok şükür. (Daha doğrusu ben işin mantığını anlattım, onlar kodlarda yardımcı oldular sağolsunlar)

Alttaki linkten sh dosyasını indirip, fotoğrafların olduğu klasöre atmanız ve terminalden çalıştırmanız yeterli.

Hatırlatmalar:

1- Fotoğrafların yanında hedef adlı bir klasör oluşacak ve içine fotoğraflar 133x171 boyutunda, 20-50 kb aralığında olarak, asıl dosyalarla dosya adları aynı olmuş şekilde düzenlenmiş olacak. (Yani e-okula sıkıntısız yüklenebilecek.)

2- Fotoğrafların dikey çekilmiş olduğundan emin olun. Yataysa kodlarda değişiklik yapmanız gerekir.

3- Fotoğrafları boyutlandırırken en sık başımıza gelen çocukların daha şişman ya da daha zayıf görünmesi problemini de çözdük. Bunu yapabilmesi için fotoğrafların kenarlarından az miktarda kırpmalar yapması gerekiyor. Bu yüzden çocukları kadrajda sıfırlamayın, biraz paylı çekin.

Çalıştırmak için:

Öncelikle bilgisayarınızda yüklü değilse aşağıdaki komut ile imagemagick uygulamasını yükleyiniz.

sudo apt-get install imagemagick

Daha sonra sh dosyası ve fotoğrafların klasörün içinde terminal açın.

sudo chmod +x düzenle.sh komutu ile sh dosyasını tanımlayın.

Sonraki işlemlerinizde sadece aşağıdaki kodu çalıştırmanız yeterli.

./düzenle.sh

2 Beğeni

Elinize sağlık hocam, azminiz vesilesiyle bir ihtiyaç için (çok zor olmadığı halde bugüne kadar yapılmayan) güzel bir ürün çıkmış oldu. Bundan sonra da MEB’de ihtiyacı olanlar için kolaylık olacaktır.

1 Beğeni

Github, Gitlab, kod.pardus.org.tr hepsi de ücretsiz siteler. Bir hesap açın ve kodunuzu gist veya snippet olarak yükleyin.

Github’ın ücretli kısmı da var ama oraya girmenize gerek yok. Google Drive üzerinden kod paylaşmak pek iyi bir yöntem olmuyor genelde, siz bilirsiniz tabi. kod.pardus.org.tr öneririm.

Hem buraya yazdığınız dosyanın çalışma şeklini anlattığınız yazıyı da eğer kod.pardus.org.tr’de snippet oluşturursanız README kısmına yazabilirsiniz. Daha güzel gözükür.

2 Beğeni

Linke bakıp kontrol eder misiniz? Doğru mu yapmışım? Tamam derseniz linki ona göre tekrar düzenleyeyim.

2 Beğeni

Evet gayet iyi gözüküyor. :+1:

JPEG resim dosyası işlenirken hata (Not a JPEG file: starts with 0x42 0x4d)

hatası veriyor. yeni oluşturulan resim açılmıyor

İlk denediğiniz resimlerinizin formatı nedir acaba? Farklı formatta denediyseniz, sh dosyası jpg resimelr üzerine çalışacak şekilde ayarlandı.

jpg uzantılı resimlerle de denedim. o zaman resim oluşuyor ama açılamıyor

Nasıl bir hata veriyor, resim ya da video atma şansınız var mı?

Bir de resimlerin olduğu klasörde terminal açıp aşağıdaki komutu çalıştırıp, çıktısını buraya yazar mısınız?

identify *.jpg; ./düzenle.sh; cd ./hedef; identify *.jpg

Pardus21 kurdum
tekrardan yeni resimlerle baştan denedim oldu. çok teşekkür ederim emekleriniz için

3 Beğeni

Bu konu son cevaptan 10 gün sonra otomatik olarak kapatıldı. Yeni cevap girilmesine izin verilmiyor.