How to get thumbnail image of a website.

10 10 2008

Quite often, in web site development we need to capture the thumbnail image of particular website. Following is the way to do it.

Step 1. Make a new class which will hold all neccessary things to capture the thumbnail

public class WebsiteThumbnailImageGenerator
{
public static Bitmap GetWebSiteThumbnail(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)
{
WebsiteThumbnailImage thumbnailGenerator = new WebsiteThumbnailImage(Url, BrowserWidth, BrowserHeight, ThumbnailWidth, ThumbnailHeight);
return thumbnailGenerator.GenerateWebSiteThumbnailImage();
}

private class WebsiteThumbnailImage
{
public WebsiteThumbnailImage(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)
{
this.m_Url = Url;
this.m_BrowserWidth = BrowserWidth;
this.m_BrowserHeight = BrowserHeight;
this.m_ThumbnailHeight = ThumbnailHeight;
this.m_ThumbnailWidth = ThumbnailWidth;
}

private string m_Url = null;
public string Url
{
get
{
return m_Url;
}
set
{
m_Url = value;
}
}

private Bitmap m_Bitmap = null;
public Bitmap ThumbnailImage
{
get
{
return m_Bitmap;
}
}

private int m_ThumbnailWidth;
public int ThumbnailWidth
{
get
{
return m_ThumbnailWidth;
}
set
{
m_ThumbnailWidth = value;
}
}

private int m_ThumbnailHeight;
public int ThumbnailHeight
{
get
{
return m_ThumbnailHeight;
}
set
{
m_ThumbnailHeight = value;
}
}

private int m_BrowserWidth;
public int BrowserWidth
{
get
{
return m_BrowserWidth;
}
set
{
m_BrowserWidth = value;
}
}

private int m_BrowserHeight;
public int BrowserHeight
{
get
{
return m_BrowserHeight;
}
set
{
m_BrowserHeight = value;
}
}

public Bitmap GenerateWebSiteThumbnailImage()
{
Thread m_thread = new Thread(new ThreadStart(_GenerateWebSiteThumbnailImage));
m_thread.SetApartmentState(ApartmentState.STA);
m_thread.Start();
m_thread.Join();
return m_Bitmap;
}

private void _GenerateWebSiteThumbnailImage()
{
WebBrowser m_WebBrowser = new WebBrowser();
m_WebBrowser.ScrollBarsEnabled = false;
m_WebBrowser.Navigate(m_Url);
m_WebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);
while (m_WebBrowser.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
m_WebBrowser.Dispose();
}

private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser m_WebBrowser = (WebBrowser)sender;
m_WebBrowser.ClientSize = new Size(this.m_BrowserWidth, this.m_BrowserHeight);
m_WebBrowser.ScrollBarsEnabled = false;
m_Bitmap = new Bitmap(m_WebBrowser.Bounds.Width, m_WebBrowser.Bounds.Height);
m_WebBrowser.BringToFront();
m_WebBrowser.DrawToBitmap(m_Bitmap, m_WebBrowser.Bounds);
m_Bitmap = (Bitmap)m_Bitmap.GetThumbnailImage(m_ThumbnailWidth, m_ThumbnailHeight, null, IntPtr.Zero);
}
}
}

Step 2: Call the GetWebSiteThumbnail() function of class like this

string address = http://www.google.com;

int width  = 200;

int height = 140;

int capWidth = 800;

int capHeight = 600;

Bitmap thumbnail = WebsiteThumbnailImageGenerator.GetWebSiteThumbnail(address, capWidth, capHeight, width, height);

Step 3 : Save the image to particular place of your website.

thumbnail.Save(Server.MapPath(“FolderName\\”) + “MyImageName”,ImageFormat.Jpeg);

Now you can find a jpeg image on your desired location.

Optional enhancement:

You can also directly give it on your aspx page like

On Step 3: thumbnail.Save (Response.OutputStream, ImageFormat.Jpeg);

<asp:Image ID=”Image1″ ImageUrl=”snapshot.aspx?site=www.google.com&width=100&height=80&capWidth=800&capHeight=600″ runat=”server” />

and on this image place you will have image.

Advertisements




How to make IE6 to respect height attribute

10 10 2008

It is too much annoying when IE6 totally ignores height attribute of div.

In order to work exactly same in both IE6 and IE7. just add

overflow:hidden

and it is done.

thanx





test link

2 10 2008

Ask questions, get answers, and share tips at  <a
href=”http://www.linkbuildingforum.com/”>linkbuilding</a&gt;
forum.

http://www.linkbuildingforum.com





Hot to add CSS style to your Controls at runtime?

27 09 2008

You can add css style to any of asp.net control dynamically as given below

btnViewed.Style[“font-weight”] = “bold”;

Hopefully it will help.





Finding control In Ajax Tab container

27 09 2008

Suppose you have a repeater control inside ajax tab container and you want to bind data with that repeater. If on your page you try to directly bind data with it, it will generate error and say that “repeater is not found”.

You have to first find the repeater and then you can do all the things with it as you do in normal .

Control myControl = TabContainer1.Tabs[0].FindControl(“RepeaterName”);

Repeater MyRepeater = (Repeater)myControl;

or simply in single step

Repeater MyRepeater =(Repeater)TabContainer1.Tabs[0].FindControl(“RepeaterName“);

Now you can bind data with it or do any operation with this repeater.

Hopefully it will help, if find helpful please leave a comment





How to Programmatically add JavaScript File to Asp.Net page?

27 09 2008

If you do not want to add your JavaScript files declaratively via HTML to your ASP.Net page, you can do it in code, and here is how:

Just add this code to the Page_Init event handler on your page:


protected void Page_Init(object sender, EventArgs e)

{

HtmlGenericControl js = new HtmlGenericControl(“script”);

js.Attributes[“type”] = “text/javascript”;

js.Attributes[“src”] = “jscript/formfunctions.js”;

Page.Header.Controls.Add(js);

}


And thats all there is to it http://www.aspdotnetfaq.com/fckeditor/editor/images/smiley/msn/wink_smile.gif.





How to Programmatically add CSS Stylesheet file to Asp.Net page?

27 09 2008

Sometimes its necessary to programmatically add some CSS stylesheets to your ASP.NET page,

Following is the way

protected void Page_Init(object sender, EventArgs e)

{

HtmlLink css = new HtmlLink();

css.Href = “css/fancyforms.css”;

css.Attributes[“rel”] = “stylesheet”;

css.Attributes[“type”] = “text/css”;

css.Attributes[“media”] = “all”;

Page.Header.Controls.Add(css);

}

And thats it, next time you load this page, reference to your CSS file will be added at runtime to the page HTML code and loaded.