这段代码在那里设置打水印坐标呢?

aocl170 2008-11-01 12:06:43
    protected void AddWaterPic(string Path, string Path_syp, string Path_sypf)
{
System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
System.Drawing.Image copyImage = System.Drawing.Image.FromFile(Path_sypf);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
g.DrawImage(copyImage, new System.Drawing.Rectangle(image.Width - copyImage.Width, image.Height - copyImage.Height, copyImage.Width, copyImage.Height), 0,0, copyImage.Width, copyImage.Height, System.Drawing.GraphicsUnit.Pixel);
g.Dispose();

image.Save(Path_syp);
image.Dispose();
}

如果这段代码中没有,各位可以帮我加上吗?
...全文
51 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yoursWTR 2008-11-01
  • 打赏
  • 举报
回复
你可以把图片处理写成类方便应用,定位水印你可以写成这样,

 
/// <summary>
/// 水印位置
/// </summary>
public enum WatermarkPosition
{
/// <summary>
/// 左上
/// </summary>
LeftTop,
/// <summary>
/// 左中
/// </summary>
Left,
/// <summary>
/// 左下
/// </summary>
LeftBottom,

/// <summary>
/// 正上
/// </summary>
Top,
/// <summary>
/// 正中
/// </summary>
Center,
/// <summary>
/// 正下
/// </summary>
Bottom,

/// <summary>
/// 右上
/// </summary>
RightTop,
/// <summary>
/// 右中
/// </summary>
RightCenter,
/// <summary>
/// 右下
/// </summary>
RigthBottom
}


/// <summary>
/// 设置水印位置
/// </summary>
/// <param name="positon">枚举WatermarkPosition: WatermarkPosition</param>
/// <param name="X">原图Width: int</param>
/// <param name="Y">原图Height: int</param>
/// <param name="x">水印图Width: int</param>
/// <param name="y">水印图Height: int</param>
/// <param name="i">边距: int</param>
/// <returns>返回Rectangle: Rectangle</returns>
private Rectangle GetWatermarkRectangle(WatermarkPosition positon, int X, int Y, int x, int y, int i)
{
switch (positon)
{
case WatermarkPosition.LeftTop:
return new Rectangle(i, i, x, y);
case WatermarkPosition.Left:
return new Rectangle(i, (Y - y) / 2, x, y);
case WatermarkPosition.LeftBottom:
return new Rectangle(i, Y - y - i, x, y);
case WatermarkPosition.Top:
return new Rectangle((X - x) / 2, i, x, y);
case WatermarkPosition.Center:
return new Rectangle((X - x) / 2, (Y - y) / 2, x, y);
case WatermarkPosition.Bottom:
return new Rectangle((X - x) / 2, Y - y - i, x, y);
case WatermarkPosition.RightTop:
return new Rectangle(X - x - i, i, x, y);
case WatermarkPosition.RightCenter:
return new Rectangle(X - x - i, (Y - y) / 2, x, y);
default:
return new Rectangle(X - x - i, Y - y - i, x, y);
}
}



//watermark:水印Image, position: WatermarkPosition, source: 原图Image
graphics.DrawImage(watermark, GetWatermarkRectangle(position, source.Width, source.Height, watermark.Width, watermark.Height, margin));
最后定位时


yoursWTR 2008-11-01
  • 打赏
  • 举报
回复
g.DrawImage(copyImage, new System.Drawing.Rectangle(image.Width - copyImage.Width, image.Height - copyImage.Height, copyImage.Width, copyImage.Height), 0,0, copyImage.Width, copyImage.Height, System.Drawing.GraphicsUnit.Pixel);
g.Dispose();
雨打青衫 2008-11-01
  • 打赏
  • 举报
回复
示例:

using System;
using System.Web;
using System.Drawing;
using FileImage;

public partial class CreateWaterMark : System.Web.UI.Page
{
private string url = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
//获取被创建水印图图像的地址
if (Request.Params["SourceImageUrl"] != null)
{
url = Request.Params["SourceImageUrl"].ToString();
}
if (string.IsNullOrEmpty(url) == true) return;
///设置源图和水印图的地址
string sourcePath = Server.MapPath(FileImageSystem.STOREFILEPATH + url);
string watermarkUrl = FileImageSystem.STOREWATERMARKIMAGEPATH + url;
string watermarkPath = Server.MapPath(watermarkUrl);
int startIndex = url.IndexOf("/") + 1;
int endIndex = url.LastIndexOf(".");
string watermark = url.Substring(startIndex, endIndex - startIndex);
///创建水印图
CreateWatermarkImage(sourcePath, watermarkPath, watermark);
///输出水印图的信息
Response.Write("创建图像(" + url + ")的水印图成功,保存文文件:" + watermarkUrl + "<br />");
///显示水印图片
imgWatermark.ImageUrl = watermarkUrl;
}

/// <summary>
/// 创建水印图
/// </summary>
/// <param name="sourcePath">源图路径(物理路径)</param>
/// <param name="watermarkPath">保存水印图路径(物理路径)</param>
/// <param name="watermark">水印文字</param>
private void CreateWatermarkImage(string sourcePath, string watermarkPath, string watermark)
{
Image sourceImage = Image.FromFile(sourcePath);
///根据源图的大小创建一个新的bmp图片
Image watermarkImage = new Bitmap(sourceImage.Width, sourceImage.Height);
///创建Graphics对象g
Graphics g = Graphics.FromImage(watermarkImage);
///设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
///设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
///清空画布,并把背景色设置为透明
g.Clear(System.Drawing.Color.Transparent);
///创建水印图,并绘制源图
g.DrawImage(sourceImage,
new System.Drawing.Rectangle(0, 0, sourceImage.Width, sourceImage.Height),
new System.Drawing.Rectangle(0, 0, sourceImage.Width, sourceImage.Height),
System.Drawing.GraphicsUnit.Pixel);

///创建字体和画笔
Font font = new Font("宋体", 48f, FontStyle.Bold);
Brush brush = new SolidBrush(Color.Red);
g.DrawString(watermark, font, brush, 50, 50);

try
{ ///保存水印图,其格式和原图格式相同。
watermarkImage.Save(watermarkPath, sourceImage.RawFormat);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{ ///释放资源
sourceImage.Dispose();
watermarkImage.Dispose();
g.Dispose();
}
}
}

aocl170 2008-11-01
  • 打赏
  • 举报
回复
楼上兄台,我不大明你代码,能不能给个完整例子?

62,253

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧