Google Photos – I (Göç ederken)

Share on Facebook31Tweet about this on TwitterShare on Google+0

IMG_20130630_182018

(Önsöz: Okurken fark edeceğiniz gibi yazı sadece bu teknolojiden bahsetmeyi değil meraklı okuyucuları Linux komut satırıyla temas ettirmeyi de hedefliyor.)

Geçen hafta Google tarafından yayınlanan yeni Google Photos gelişkin özellikleriyle oldukça ilgi uyandırdı. Gerek kendi çektiğim gerek ta ICQ, MSN zamanlarında sağdan soldan aldığım fotoğraflar, sabit diskte bölük börçük duracağına dedim tam zamanıdır bahar temizliğinin!

Tanışma

Öncelikle uygulamanın mobil sürümüyle tanıştım. Biraz karışık geldi. Bir uygulamanın her tarafına hakim olmadan onu kullanmaya başlayamamak gibi bir huyum var. Şöyle uzaktan uzaktan bakıştım yani bir süre. Çok elleştirmedim fotoğraflarıma, otomatik senkronizasyon, yedekleme ne varsa hepsini kapadım hemen. Öncelikle telefondaki kamera diziniyle Instagram dizinini yedeklemesini istedim. Zira Instagram üzerinde de oldukça fazla fotoğrafım var ve sağolsun Instagram uygulaması işlenmiş fotoğrafları cihazda tutuyor.

Vakti zamanında bir heyecanla Picasa’ya yüklediğim DSLR ile çekilmiş bazı fotoğraflarım da otomatik olarak bu yeni Google Photos’a göç etmiş oldu bu arada. Bu da beni biraz motive etti çünkü kahrolsun ki mobil uygulamada anılar adeta HD kalitesinde parıldıyordu 🙂

Depolama Seçenekleri

Yüksek kalite: 16 megapikselden düşük fotoğraflar için geçerli sınırsız depolama imkanı. Sunucu tarafında kayıplı sıkıştırma da yapılıyor sanırım.

Özgün boyut: Google hesabınızın öntanımlı 15 GB depolama alanını (buraya GMail, Drive, vs. hizmetleri de dahil) kullanan ve fotoğrafları olduğu gibi bırakan seçenek. DSLR makine sahipleri için biçilmiş kaftan. 15 GB bana yetmez diyorsanız aylık 100 GB için fiyat 2$.

Nasıl işliyor?

Bence biraz karışık :/ Öncelikle telefonunuzdaki hangi dizinlerin yedeklenmesini istediğinizi seçiyorsunuz. Sonra senkronizasyon ayarlarınıza göre (3G/Kablosuz/Sadece şarjda seçenekleri mevcut) bulut alanıyla eşitleme/yedekleme yapılıyor. Siz bir albüm yaratmadığınız sürece tüm fotoğraflar ana ekranda (All photos) görünüyor. Öğrendiğim ve anlayabildiğim kadarıyla albümler elle yaratılan fotoğraf kümeleri.

Ve bilgisayarın başına oturdum…

Evdeki masaüstü bilgisayarımın diskinde yakın zamanlarda telefon değişikliği / sıfırlama esnasında kopyaladığım bir takım fotoğraflar var. İlk karşıma çıkan dizini 14 Aralık 2013 tarihinde telefondan kopyalamışım ve içerisinde 893 adet fotoğraf var. Öncelikle bir tanesini Google Photos web arayüzüne sürükledim ancak maalesef fotoğrafın çekilme zamanı bilgisini elde edemedi. Bu bilgi önemli yoksa fotoğraflar albümlerde çekim tarihine göre sıralanmamış olacak.

Fotoğraf çekim anına dair çeşitli bilgiler fotoğraf dosyalarının ön-bilgi (metadata) alanlarında saklı EXIF adı verilen bir veri yapısının içerisinde tutulur. EXIF standardı, çekim tarihi, enstantane, diyafram açıklığı, ISO değeri, beyaz dengesi,  flaşın açık/kapalı olduğu gibi çok çeşitli verileri saklayabiliyor. Telefonda çekilden fotoğraflarda da bu bilgiler mevcut ancak Instagram hizmeti büyük ihtimalle bu veriler kaldırıyor.

Dosyaların oluşturulma tarihleri ve adları hâlen çekim tarihini yansıtır şekilde durduğundan aklıma ilk gelen bu bilgileri dosyaların EXIF alanına enjekte etmek oldu. Komut satırımıza ışınlanıyoruz:

$ exif -cl | grep Date
0x001d GPS Date - - - - -
0x0132 Date and Time * - - - -
0x9003 Date and Time (Original) - - - - -
0x9004 Date and Time (Digitized) - - - - -

exif aracına -cl parametresi verildiğinde tüm EXIF etiketlerinin adlarını ve sayılarını gösteriyor. Bunların arasında grep ile Date ifadesini arayınca 4 adet etiket çıktı. Tahminim 0x9003 numaralı EXIF etiketini değiştirdiğimde tarih bilgisini dosyaya gömmüş olacağız. Biraz man sayfaları biraz Google’da gezindikten sonra şöyle bir kabuk betiği yazıyorum:

#!/bin/bash
PHOTO_DIR=$1
cd $1
mkdir exified
for PHOTO in $(ls IMG*jpg); do
 echo "Processing $PHOTO..."
 DATE_TAKEN=`echo $PHOTO | sed -r "s/^IMG_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]{2})([0-9]{2})([0-9]{2}).jpg$/\1:\2:\3 \4:\5:\6/"`
 exif -c $PHOTO --ifd=EXIF --tag=0x9003 --set-value="${DATE_TAKEN}" --output="exified/$PHOTO"
done

Yukarıdaki betiğe parametre olarak bir dizin verdiğimde o dizinin altında exified adlı bir dizin yaratıp bu dizine EXIF tarih/saat verisi eklenmiş yeni fotoğrafları atıyor. Çalıştıralım:

$ cd Instagram-14-12-2013
$ chmod +x fix_exif.sh
$ time ./fix_exif.sh .
...
...
real 0m27.095s
user 0m1.203s
sys 0m4.996s

Betik 893 fotoğrafı 27 saniyede işleyerek EXIF verili kopyalarını exified altında oluşturdu. Şimdi bu dizinden bir fotoğrafı sürükleyerek Photos’a attığımda tüm fotoğrafların olduğu ana ekranda doğru tarihe yerleşiyor 🙂

Share on Facebook31Tweet about this on TwitterShare on Google+0