Bitmap bitmap = new Bitmap(Server.MapPath(@"AreaImage\1.jpg"));
//设置范围
Rectangle r = new Rectangle(20, 20, 300, 300);
//创建剪切后的Bitmap对象
Bitmap bitmap1 = new Bitmap(300, 300);
Graphics g1 = Graphics.FromImage(bitmap1);
g1.DrawImage(bitmap, r);
// g1.DrawImageUnscaled(bitmap, r);
bitmap1.Save(Server.MapPath(@"AreaImage\new.jpg"));我有一张图片1.jpg 从坐标x=20 y=20开始剪切300宽度高度的新图片
为什么保存后的new.jpg一打开会有top 20 left 20 的空白间隔
我知道是上面指定的坐标的位置 那我怎么给出掉这个空白位置从0,0开始显示这个图片?
这里面用到坐标的就是 Rectangle r = new Rectangle(20, 20, 300, 300);
从x=20 y=20开始切图 是我给的有问题吗?应该怎么给?
换了还报参数无效? 这是什么问题额?
目标区域
Rectangle r = new Rectangle(0, 0, 300, 300);
我是想从x=20 y=20开始切
既然产从20,20的地方开始切,那么新的图的高和宽就不是300了
g.DrawImage(原Image对象, 新图中的目标区域, 原图中需绘制的区域, GraphicsUnit.Pixel);
/// 剪裁 -- 用GDI+
/// </summary>
/// <param name="b">原始Bitmap</param>
/// <param name="StartX">开始坐标X</param>
/// <param name="StartY">开始坐标Y</param>
/// <param name="iWidth">宽度</param>
/// <param name="iHeight">高度</param>
/// <returns>剪裁后的Bitmap</returns>
public static Bitmap KiCut(Bitmap b, int StartX, int StartY, int iWidth, int iHeight)
{
if (b == null)
{
return null;
} int w = b.Width;
int h = b.Height; if (StartX >= w || StartY >= h)
{
return null;
} if (StartX + iWidth > w)
{
iWidth = w - StartX;
} if (StartY + iHeight > h)
{
iHeight = h - StartY;
} try
{
Bitmap bmpOut = new Bitmap(iWidth, iHeight, PixelFormat.Format24bppRgb); Graphics g = Graphics.FromImage(bmpOut);
g.DrawImage(b, new Rectangle(0, 0, iWidth, iHeight), new Rectangle(StartX, StartY, iWidth, iHeight), GraphicsUnit.Pixel);
g.Dispose(); return bmpOut;
}
catch
{
return null;
}
}对应着给参数就应该可以了。
真的要跟叶子说声谢谢