Herhangi Bir Web Sitesinin Resmi Nasıl Alınır?

Merhabalar, web aleminde başta Google olmak üzere birçok arama sitesinde bulunan web sitesinin resmini çekme işlemi (thumbnail) için küçük bir örnek paylaşmak istiyorum.

Öncelikle WinForm üzerinde yaptığımı belirtmek isterim.

Hemen metodumuzu paylaşmak istiyorum.


public Bitmap GenerateScreenshot(string url, int width, int height)

{

// Load the webpage into a WebBrowser control

WebBrowser wb = new WebBrowser();

Uri u = new Uri(url);

wb.ScrollBarsEnabled = false;

wb.ScriptErrorsSuppressed = true;

wb.Navigate(url);

while (wb.ReadyState != WebBrowserReadyState.Complete) {  System.Windows.Forms.Application.DoEvents(); }

 

// Set the size of the WebBrowser control

wb.Width = width;

wb.Height = height;

 

if (width == -1)

{

// Take Screenshot of the web pages full width

wb.Width = wb.Document.Body.ScrollRectangle.Width+20;

}

 

if (height == -1)

{

// Take Screenshot of the web pages full height

wb.Height = wb.Document.Body.ScrollRectangle.Height + 20;

}

// Get a Bitmap representation of the webpage as it's rendered in the WebBrowser control

Bitmap bitmap = new Bitmap(wb.Width, wb.Height);

wb.DrawToBitmap(bitmap, new Rectangle(0, 0, wb.Width, wb.Height));

return bitmap;

}

Üstteki kodumuza dikkat edersek, öncelikle bir webbrowser kontrolü create ediliyor sonra gelen url adresi setleniyor, eğer belirli bir ölçüsü verilmişse o ölçü, verilmemişse browser açılabileceği genişlik ve yükseklik kadar açılıyor sonrasında bir Bitmap nesnesi create ediliyor ve browser’ın görünümü bitmap’e çizilerek geriye bitmap nesnesi dönderilmesi isteniyor.

Bu noktada ihtiyacınıza göre kodu düzenleyip metodu void yapıp direkt olarak bitmap.Save(“dosya yolu”);  ile dosyayı kaydedebilirsiniz.

Ben kendime göre burada Form_Load’da şöyle bir işlem yaptırdım:


//WebBrowser create et ve icerisinde faturayi farkli kaydet.

Bitmap b = GenerateScreenshot(@"url adresi",

-1, -1);

string name = @"c:\" + DateTime.Now.ToString().Replace(":", "").Replace(".", "") + ".jpg";

b.Save(name);

 

//Outlook penceresine ekli olarak yeni mail ekrani ac.

Outlook.Application a = new Outlook.Application();

Outlook.MailItem mail = a.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem;

mail.Subject = " - Ekte";

Outlook.AddressEntry currentUser = a.Session.CurrentUser.AddressEntry;

if (currentUser.Type == "EX")

{

mail.Attachments.Add(name, Outlook.OlAttachmentType.olByValue, Type.Missing, Type.Missing);

mail.Display(true);

Outlook.ExchangeUser manager = currentUser.GetExchangeUser().GetExchangeUserManager();

// Add recipient using display name, alias, or smtp address

mail.Recipients.Add(manager.PrimarySmtpAddress);

mail.Recipients.ResolveAll();

}

Burada resmi C:’nin altına kayıt edip, sonrasında Outlook penceresi açtırarak içerisine Attach yaptırdım.

Kodu kendinize göre düzenleyerek kullanabilirsiniz.

Bol kodlu günler.

Not: Üstte belirtilen ‘Outlook.Application a = new Outlook.Application();’ nesnesinde ki Outlook kelimesi, yukarıda eklenen namespace’ten gelmektedir.

Yukarıdaki kod ise: using Outlook = Microsoft.Office.Interop.Outlook;

3,488 total views, 2 views today

No Comments

Leave a Comment

Ulaşım için: Facebook: /ganigani Twitter: @abdulgani_demir


*

%d blogcu bunu beğendi: