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,436 total views, 2 views today

No Comments

Leave a Comment

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


*

%d blogcu bunu beğendi: