開一個 Web 專案,拉一個 Button,在 c:\ 下準備一張 Picture.jpg,
C# 程式碼如下,經測試是 ok 的:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Drawing.Imaging;
namespace WebApplication3
{
/// <summary>
/// Summary description for WebForm1.
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Button1_Click(object sender, System.EventArgs e)
{
Bitmap b = new Bitmap(@"C:\Picture.jpg");
Bitmap b2 = new Bitmap(b, 80, 60);
b2.Save(@"C:\Picture-s.jpg",ImageFormat.Jpeg);
}
}
}
Lee,Hou-Hsien
"ammon" 來函:
Post by ammon李'r,
如果方便的話,你可以按照你自己說的方式測試看看結果嗎 ?!
因為我之前便已經使用 System.Drawing.Image 的方式去把圖 load 起來,在塞到 System.Grapices
,不過在執行.save此一方法時,會出現錯誤訊息。
錯誤訊息如下:
例外詳細資訊: System.Runtime.InteropServices.ExternalException: 在 GDI+ 中發生泛用錯誤。
3Q
Ammon
"Lee,Hou-Hsien 李後賢" 來函:
Post by Lee,Hou-Hsien æå¾è³¢嗯~不好意思...太久沒用了...:P
這樣的話..
您得先將原圖 Load 進來,
轉型成 Image 之後,再改大小即可。
Lee,Hou-Hsien
"ammon" 來函:
Post by ammonLee,Hou-Hsien,
你的class 宣告錯誤哦...
搭配width, heigth 宣告的是 image 而非是file name
"Lee,Hou-Hsien" 來函:
Post by Lee,Hou-Hsienusing System.Drawing.Bitmap;
using System.Drawing.Imaging;
假設要將一張 2272 * 1704 的圖案 C:\Picture.jpg 縮成 800 * 600 ,
首先,將此圖以800 * 600 載入到 Bitmap 物件中:
接著存檔:
就完成了,不知道這樣能不能達到您想要的效果?
Lee,Hou-Hsien
"ammon" 來函:
Post by ammon請教
原意:
針對圖片變更大小,如 2272 * 1704 改成 800 * 600 or 400 * 300 改成 800 *
600,可以另存成一個新的圖片檔案,圖片格式不變(JPG still JPG),但希望檔案大小會跟著變化(如,原size 1420KB,轉成800 *
600 後,應縮小到 500 KB 以下)。
遇到的狀況:
使用 System.Drawing.Image 可以透過事件 GetThumbnailImage
取得該圖片中原有的縮圖來製造縮圖,目前這點是OK的,不過,如果是改成 size 大一點的就會有問題,圖片會失真,如:指定大小超過180 * 120 以上
也試過 System.Graphics.DrawImage ,但是在使用上會有錯誤發生,SDK上的範例 >_< 看不懂
想得到的答案:
不知道是否有方法可以隨意改變圖片的大小,同時圖片不失真,且可以存檔下來的方法
--
welcome to http://ammon.idv.ec