Yeni yazi dizimizde (cok cool bir insan gibi hissetmek (aslinda coolum selam.)) telefonumuzdan picasa'ya resim upload edecegiz. Benim gibi bir bardak sütü önünüze alıp, Visual Studio'nuzu açın. Arkadan MFÖ çalsın, yoksa Exception veriyor.
Projeyi açalım, adı PicasaUploader olsun. Sayfaya 1 adet Button koyalım, adı uploadBtn, content'ı "Fotoğraf Çek" olsun.
Blend ile sayfamızı açalım, 8gb ramli i7 makinamda, Visual Studio nedense designer'da çok yavaş. Evet.
private void uploadBtn_Click(object sender, RoutedEventArgs e)
{
Microsoft.Phone.Tasks.CameraCaptureTask task = new Microsoft.Phone.Tasks.CameraCaptureTask();
task.Completed += new EventHandler<Microsoft.Phone.Tasks.PhotoResult>(task_Completed);
task.Show();
}
Evet, button'a bastığımızda, CameraCaptureTask açılıyor. Task bittiğinde event handler yoluyla task_Complete fonksiyonuna gidiyor. Event Handler'ı verdikten sonra task'ı çalıştırıyoruz.
Şimdi, kod yazacağımız yer completed eventı.
Eğer kullanıcı, resim çekmiş yada seçmiş, ardından OK tuşuna basmışsa, upload yapıcaz.
if (e.TaskResult == Microsoft.Phone.Tasks.TaskResult.OK)
{
}
İşte o IF ifadesi.
Amacımız çekilen resmi byte arrayine çevirmek, stream'e yani.
BitmapImage bmpl = new BitmapImage();
bmpl.SetSource(e.ChosenPhoto);
WriteableBitmap wb = new WriteableBitmap(bmpl);
MemoryStream memSt = new MemoryStream();
wb.SaveJpeg(memSt, 1024, 768, 0, 70);
Sırasıyla, bitmap image yaratıyoruz, çekilen resmi içine atıyoruz, bu bitmapten writablebitmap yaratıyoruz, bu obje içeriğini bir stream'e yazabiliyor, o stream ise MemoryStream'i.
Neyse, bir şekilde resmi, stream'e çevirmeyi başardık.
Şimdi yapmamız gereken şey, bir rest client bulmak.
RestSharp gayet güzel, kullanışlı. Buyrun: http://restsharp.org/
var client = new RestClient("https://www.google.com");
var request = new RestRequest("accounts/CLientLogin", Method.POST);
request.AddParameter("service", "lh2", ParameterType.GetOrPost);
request.AddParameter("accountType", "google", ParameterType.GetOrPost);
request.AddParameter("source", "exampleCo-exampleApp-1", ParameterType.GetOrPost);
request.AddParameter("Email", "upload@hebele.me", ParameterType.GetOrPost);
request.AddParameter("Passwd", "91sa99113d", ParameterType.GetOrPost);
Buradan account bilgilerinizi giriyorsunuz, o account'un picasa hesabına upload edeceğiz. Albüm ID vermek mümkün, default albüme atmak ta mümkün. Lütfen mail hesabıma girmeyin, kredi kart bilgilerimin hepsi onda.
Source kısmı ne işe yarıyor çok merak ediyorum. Application adı sanki ama, laylaylom koysam olcak gibi.
Belli bir aşamada bu stream'i byte array'e çevirmek gerek tabi.
byte[] array = new byte[memSt.Length];
array = memSt.ToArray();
Onu da bu şekilde yapabiliyoruz. Kod geliyor!