C#實(shí)現(xiàn)圖片縮略圖功能的示例詳解
實(shí)踐過(guò)程
效果

代碼
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public Image ResourceImage;
private int ImageWidth;
private int ImageHeight;
public string ErrMessage;
public bool ThumbnailCallback()
{
return false;
}
public bool GetReducedImage(double Percent, string targetFilePath)
{
try
{
Bitmap bt = new Bitmap(120, 120);
Graphics g = Graphics.FromImage(bt);
g.Clear(Color.White);
Image ReducedImage;
Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);
ImageWidth = Convert.ToInt32(ResourceImage.Width * Percent);
ImageHeight = Convert.ToInt32(ResourceImage.Height * Percent);
ReducedImage = ResourceImage.GetThumbnailImage(ImageWidth, ImageHeight, callb, IntPtr.Zero);
if (ImageWidth > ImageHeight)
{
g.DrawImage(ReducedImage, 0, (int) (120 - ImageHeight) / 2, ImageWidth, ImageHeight);
}
else
{
g.DrawImage(ReducedImage, (int) (120 - ImageWidth) / 2, 0, ImageWidth, ImageHeight);
}
g.DrawRectangle(new Pen(Color.Gainsboro), 0, 0, 119, 119);
bt.Save(@targetFilePath, ImageFormat.Jpeg);
bt.Dispose();
ReducedImage.Dispose();
return true;
}
catch (Exception e)
{
ErrMessage = e.Message;
return false;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
}
}
private void button2_Click(object sender, EventArgs e)
{
double percent;
string imgpath = openFileDialog1.FileName;
string imgName = imgpath.ToString().Substring(imgpath.ToString().LastIndexOf("\\") + 1,
imgpath.ToString().Length - 1 - imgpath.ToString().LastIndexOf("\\"));
imgName = imgName.Remove(imgName.LastIndexOf("."));
if (openFileDialog1.FileName.Length != 0)
{
ResourceImage = Image.FromFile(openFileDialog1.FileName);
if (ResourceImage.Width < ResourceImage.Height)
{
percent = (double) 120 / ResourceImage.Height;
}
else
{
percent = (double) 120 / ResourceImage.Width;
}
GetReducedImage(percent, "c:\\_" + imgName + ".JPG");
pictureBox2.Image = Image.FromFile("c:\\_" + imgName + ".JPG");
}
}
}
partial class Form1
{
/// <summary>
/// 必需的設(shè)計(jì)器變量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的資源。
/// </summary>
/// <param name="disposing">如果應(yīng)釋放托管資源,為 true;否則為 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows 窗體設(shè)計(jì)器生成的代碼
/// <summary>
/// 設(shè)計(jì)器支持所需的方法 - 不要
/// 使用代碼編輯器修改此方法的內(nèi)容。
/// </summary>
private void InitializeComponent()
{
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.pictureBox2 = new System.Windows.Forms.PictureBox();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
this.SuspendLayout();
//
// pictureBox1
//
this.pictureBox1.Location = new System.Drawing.Point(11, 42);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(262, 232);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
//
// pictureBox2
//
this.pictureBox2.Location = new System.Drawing.Point(305, 80);
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.Size = new System.Drawing.Size(155, 132);
this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBox2.TabIndex = 1;
this.pictureBox2.TabStop = false;
//
// button1
//
this.button1.Location = new System.Drawing.Point(11, 13);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 2;
this.button1.Text = "選擇圖片";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.Location = new System.Drawing.Point(93, 12);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(75, 23);
this.button2.TabIndex = 3;
this.button2.Text = "顯示縮略圖";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// openFileDialog1
//
this.openFileDialog1.Filter = "圖片文件|*.jpg;*.jpeg;*.bmp;*.png";
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(487, 296);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Controls.Add(this.pictureBox2);
this.Controls.Add(this.pictureBox1);
this.Name = "Form1";
this.Text = "Form1";
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.PictureBox pictureBox2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
}
到此這篇關(guān)于C#實(shí)現(xiàn)圖片縮略圖功能的示例詳解的文章就介紹到這了,更多相關(guān)C#圖片縮略圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#中winform控制textbox輸入只能為數(shù)字的方法
這篇文章主要介紹了C#中winform控制textbox輸入只能為數(shù)字的方法,包括使用keyPress事件限制鍵盤(pán)輸入以及TextChanged事件限制粘貼等情況,來(lái)實(shí)現(xiàn)控制輸入為數(shù)字的功能,需要的朋友可以參考下2015-01-01
C#?CefSharp?根據(jù)輸入日期段自動(dòng)選擇日期的操作代碼
這篇文章主要介紹了C#?CefSharp?根據(jù)輸入日期段自動(dòng)選擇日期的操作代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01
wpf將表中數(shù)據(jù)顯示到datagrid示例
這篇文章主要介紹了wpf將表中數(shù)據(jù)顯示到datagrid示例,需要的朋友可以參考下2014-02-02
C#中利用Lotus notes公共郵箱發(fā)送郵件的方法
這篇文章主要給大家介紹了關(guān)于C#中利用Lotus notes公共郵箱發(fā)送郵件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2018-02-02
Revit API取得變量的內(nèi)參名稱(chēng)實(shí)例代碼
這篇文章介紹了Revit API取得變量的內(nèi)參名稱(chēng)實(shí)例代碼,有需要的朋友可以參考一下2013-11-11
C#類(lèi)的創(chuàng)建與初始化實(shí)例解析
這篇文章主要介紹了C#類(lèi)的創(chuàng)建與初始化實(shí)例解析,有助于初學(xué)者較為直觀的理解C#的類(lèi),需要的朋友可以參考下2014-07-07
C#使用System.Net庫(kù)實(shí)現(xiàn)自動(dòng)發(fā)送郵件功能
在C#編程環(huán)境中,實(shí)現(xiàn)郵件發(fā)送功能是一項(xiàng)常見(jiàn)的需求,無(wú)論是Web應(yīng)用程序還是Windows窗體應(yīng)用程序,下面小編就來(lái)為大家講講如何使用System.Net庫(kù)實(shí)現(xiàn)這一功能吧2025-03-03
微信開(kāi)發(fā)--企業(yè)轉(zhuǎn)賬到用戶(hù)
本文主要介紹了微信開(kāi)發(fā)--企業(yè)轉(zhuǎn)賬到用戶(hù)的實(shí)現(xiàn)方法與步驟。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01

