c#改变图片大小和限定文件大小
//更改图片大小voidchangeSize(stringstrImgPath,stringstrChangeFile,intnewWidth){//strImgPath...
//更改图片大小
void changeSize(string strImgPath, string strChangeFile, int newWidth)
{ //strImgPath为要更改大小的图片路径,strChangeFile为文件保存的路径(包括jpg文件名),newWidth为新的宽度大小
pic = new Bitmap(strImgPath);
Bitmap newpic = new Bitmap((System.Drawing.Image)pic);
float k = (float)newWidth / (float)newpic.Width;
int newHeight = (int)(k * newpic.Height);
savepic = new Bitmap(newpic, newWidth, newHeight);
savepic.Save(strChangeFile);
}
--------------------------
我是这样写的,但是改变大小后图片都很大,不懂得改图片的压缩率,求教。直接给代码吧
要求是,通过浏览选中一张图片,然后点击button开始,转换大小固定为宽400px,转换后文件大小要小于100k。
给出完整代码,追加分数,谢谢~ 展开
void changeSize(string strImgPath, string strChangeFile, int newWidth)
{ //strImgPath为要更改大小的图片路径,strChangeFile为文件保存的路径(包括jpg文件名),newWidth为新的宽度大小
pic = new Bitmap(strImgPath);
Bitmap newpic = new Bitmap((System.Drawing.Image)pic);
float k = (float)newWidth / (float)newpic.Width;
int newHeight = (int)(k * newpic.Height);
savepic = new Bitmap(newpic, newWidth, newHeight);
savepic.Save(strChangeFile);
}
--------------------------
我是这样写的,但是改变大小后图片都很大,不懂得改图片的压缩率,求教。直接给代码吧
要求是,通过浏览选中一张图片,然后点击button开始,转换大小固定为宽400px,转换后文件大小要小于100k。
给出完整代码,追加分数,谢谢~ 展开
2个回答
展开全部
/// <summary>
/// 生成缩略图
/// </summary>
/// <param name="serverImagePath">图片地址</param>
/// <param name="thumbnailImagePath">缩略图地址</param>
/// <param name="width">图片宽度</param>
/// <param name="height">图片高度</param>
/// <param name="p"></param>
public static void GetThumbnail(string serverImagePath, string thumbnailImagePath, int width, int height)
{
System.Drawing.Image serverImage = System.Drawing.Image.FromFile(serverImagePath);
//画板大小
int towidth = width;
int toheight = height;
//缩略图矩形框的像素点
int x = 0;
int y = 0;
int ow = serverImage.Width;
int oh = serverImage.Height;
if (ow > oh)
{
toheight = serverImage.Height * width / serverImage.Width;
}
else
{
towidth = serverImage.Width * height / serverImage.Height;
}
//新建一个bmp图片
System.Drawing.Image bm = new System.Drawing.Bitmap(width, height);
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bm);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以透明背景色填充
g.Clear(System.Drawing.Color.White);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(serverImage, new System.Drawing.Rectangle((width - towidth) / 2, (height - toheight) / 2, towidth, toheight),
0, 0, ow, oh,
System.Drawing.GraphicsUnit.Pixel);
try
{
//以jpg格式保存缩略图
bm.Save(thumbnailImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (System.Exception e)
{
throw e;
}
finally
{
serverImage.Dispose();
bm.Dispose();
g.Dispose();
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |