关于给图片加水印的郁闷问题

zhpmy1 2009-11-03 09:08:29
各位朋友,请知道的帮忙指点指点我遇到的难题:
我网站有个需要给图片加水印的功能,加水印的功能很简单,网上到处都是,我便弄了一个,在vs.net 2005中可以调试通过,但放到我买的空间却无法正确运行,在网上查了很久,也没发现说是空间不支持 GDI+ 程序,问空间提供商他们也搞不懂,希望有过此经验的朋友帮我指定指定解决问题的方法。
程序肯定没问题,我弄了很多给图片加水印的方法,在本地用vs.net 2005运行调试全部正常,到空间就不能加水印,也不提示报错
谢谢各位朋友,分不多,请别见外~_~
...全文
121 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhpmy1 2009-11-03
  • 打赏
  • 举报
回复
如果是权限问题空间提供商可以帮我开通,但问题是现在不知道是什么权限问题,希望有类似经历的人能帮我出个注意,空间也买了,却不能用,郁闷死了
artwl_cn 2009-11-03
  • 打赏
  • 举报
回复
估计是权限问题了
wuyq11 2009-11-03
  • 打赏
  • 举报
回复
那就是虚拟空间问题,还有操作权限问题
junloveyan 2009-11-03
  • 打赏
  • 举报
回复
那就自己写个试试
wangan2008 2009-11-03
  • 打赏
  • 举报
回复
gdi+绘图 功能不支持使用吧
图片传到服务器上面 保存一次 然后 打完水印 再 保存一次
zhpmy1 2009-11-03
  • 打赏
  • 举报
回复
都不行,我都式了,本地运行正常,到空间就不行了
wuyq11 2009-11-03
  • 打赏
  • 举报
回复
图片格式是什么。JPG是否都不行
虚拟空间应该支持
zhpmy1 2009-11-03
  • 打赏
  • 举报
回复

/// <summary>
/// 在图片上加入图片版权信息
/// </summary>
/// <param name="strFileName">输入图片(绝对路径)</param>
/// <param name="strOutfileName">输出图片(绝对路径)</param>
/// <param name="strCopyRightFile">水印图片(绝对路径)</param>
/// <param name="StrPlace">水印位置</param>
/// <param name="bolFileName">是否删除输入图片</param>
public static void CreateCopyRightImage(string strFileName, string strOutfileName, string strCopyRightFile, string StrPlace, bool bolFileName)
{
System.Drawing.Image MyImage = System.Drawing.Image.FromFile(strFileName);
System.Drawing.Image CopyMyImage = System.Drawing.Image.FromFile(strCopyRightFile);
System.Drawing.Bitmap OutPut = new System.Drawing.Bitmap(MyImage);
System.Drawing.Graphics GImage = System.Drawing.Graphics.FromImage(OutPut);

int IntX = 0;
int IntY = 0;
if (StrPlace == "1") // 在左上
{
IntX = 0;
IntY = 0;
}
else if (StrPlace == "2") // 在正上
{
IntX = (MyImage.Width - CopyMyImage.Width) / 2;
IntY = 0;
}
else if (StrPlace == "3") // 在右上
{
IntX = MyImage.Width - CopyMyImage.Width;
IntY = 0;
}
else if (StrPlace == "4") // 在正左
{
IntX = 0;
IntY = (MyImage.Height - CopyMyImage.Height) / 2;
}
else if (StrPlace == "5") // 在中间
{ //[Page]
IntX = (MyImage.Width - CopyMyImage.Width) / 2;
IntY = (MyImage.Height - CopyMyImage.Height) / 2;
}
else if (StrPlace == "6") // 在正右
{
IntX = MyImage.Width - CopyMyImage.Width;
IntY = (MyImage.Height - CopyMyImage.Height) / 2;
}
else if (StrPlace == "7") // 在左下
{
IntX = 0;
IntY = MyImage.Height - CopyMyImage.Height;
}
else if (StrPlace == "8") // 在正下
{
IntX = (MyImage.Width - CopyMyImage.Width) / 2;
IntY = MyImage.Height - CopyMyImage.Height;
}
else if (StrPlace == "9") // 在右下
{
IntX = MyImage.Width - CopyMyImage.Width;
IntY = MyImage.Height - CopyMyImage.Height;
}
else
{
IntX = MyImage.Width - CopyMyImage.Width - 10;
IntY = MyImage.Height - CopyMyImage.Height - 10;
}

// 画出水印的位置
GImage.DrawImage(CopyMyImage, IntX, IntY, CopyMyImage.Width, CopyMyImage.Height);

string strExtend = strFileName.Substring(strFileName.LastIndexOf(".") + 1).ToLower();

switch (strExtend)
{
case "bmp":
OutPut.Save(strOutfileName, System.Drawing.Imaging.ImageFormat.Bmp);
break;
case "jpg":
OutPut.Save(strOutfileName, System.Drawing.Imaging.ImageFormat.Jpeg);

break;
case "gif":
OutPut.Save(strOutfileName, System.Drawing.Imaging.ImageFormat.Gif);
break;
case "icon":
OutPut.Save(strOutfileName, System.Drawing.Imaging.ImageFormat.Icon); //[Page]
break;
case "png":
OutPut.Save(strOutfileName, System.Drawing.Imaging.ImageFormat.Png);
break;
case "tif":
OutPut.Save(strOutfileName, System.Drawing.Imaging.ImageFormat.Tiff);
break;
default:
OutPut.Save(strOutfileName, System.Drawing.Imaging.ImageFormat.Jpeg);
break;
}

GImage.Dispose();
OutPut.Dispose();
MyImage.Dispose();
CopyMyImage.Dispose();

if (bolFileName)
File.Delete(strFileName);
}


这个方法调用就能生成水印图片,本地运行很好,但空间运行就不行了,也不报错
zhpmy1 2009-11-03
  • 打赏
  • 举报
回复

/// <summary>
/// 在图片上加入图片版权信息
/// </summary>
/// <param name="strFileName">输入图片(绝对路径)</param>
/// <param name="strOutfileName">输出图片(绝对路径)</param>
/// <param name="strCopyRightFile">水印图片(绝对路径)</param>
/// <param name="StrPlace">水印位置</param>
/// <param name="bolFileName">是否删除输入图片</param>
public static void CreateCopyRightImage(string strFileName, string strOutfileName, string strCopyRightFile, string StrPlace, bool bolFileName)
{
System.Drawing.Image MyImage = System.Drawing.Image.FromFile(strFileName);
System.Drawing.Image CopyMyImage = System.Drawing.Image.FromFile(strCopyRightFile);
System.Drawing.Bitmap OutPut = new System.Drawing.Bitmap(MyImage);
System.Drawing.Graphics GImage = System.Drawing.Graphics.FromImage(OutPut);

int IntX = 0;
int IntY = 0;
if (StrPlace == "1") // 在左上
{
IntX = 0;
IntY = 0;
}
else if (StrPlace == "2") // 在正上
{
IntX = (MyImage.Width - CopyMyImage.Width) / 2;
IntY = 0;
}
else if (StrPlace == "3") // 在右上
{
IntX = MyImage.Width - CopyMyImage.Width;
IntY = 0;
}
else if (StrPlace == "4") // 在正左
{
IntX = 0;
IntY = (MyImage.Height - CopyMyImage.Height) / 2;
}
else if (StrPlace == "5") // 在中间
{ //[Page]
IntX = (MyImage.Width - CopyMyImage.Width) / 2;
IntY = (MyImage.Height - CopyMyImage.Height) / 2;
}
else if (StrPlace == "6") // 在正右
{
IntX = MyImage.Width - CopyMyImage.Width;
IntY = (MyImage.Height - CopyMyImage.Height) / 2;
}
else if (StrPlace == "7") // 在左下
{
IntX = 0;
IntY = MyImage.Height - CopyMyImage.Height;
}
else if (StrPlace == "8") // 在正下
{
IntX = (MyImage.Width - CopyMyImage.Width) / 2;
IntY = MyImage.Height - CopyMyImage.Height;
}
else if (StrPlace == "9") // 在右下
{
IntX = MyImage.Width - CopyMyImage.Width;
IntY = MyImage.Height - CopyMyImage.Height;
}
else
{
IntX = MyImage.Width - CopyMyImage.Width - 10;
IntY = MyImage.Height - CopyMyImage.Height - 10;
}

// 画出水印的位置
GImage.DrawImage(CopyMyImage, IntX, IntY, CopyMyImage.Width, CopyMyImage.Height);

string strExtend = strFileName.Substring(strFileName.LastIndexOf(".") + 1).ToLower();

switch (strExtend)
{
case "bmp":
OutPut.Save(strOutfileName, System.Drawing.Imaging.ImageFormat.Bmp);
break;
case "jpg":
OutPut.Save(strOutfileName, System.Drawing.Imaging.ImageFormat.Jpeg);

break;
case "gif":
OutPut.Save(strOutfileName, System.Drawing.Imaging.ImageFormat.Gif);
break;
case "icon":
OutPut.Save(strOutfileName, System.Drawing.Imaging.ImageFormat.Icon); //[Page]
break;
case "png":
OutPut.Save(strOutfileName, System.Drawing.Imaging.ImageFormat.Png);
break;
case "tif":
OutPut.Save(strOutfileName, System.Drawing.Imaging.ImageFormat.Tiff);
break;
default:
OutPut.Save(strOutfileName, System.Drawing.Imaging.ImageFormat.Jpeg);
break;
}

GImage.Dispose();
OutPut.Dispose();
MyImage.Dispose();
CopyMyImage.Dispose();

if (bolFileName)
File.Delete(strFileName);
}


这个方法调用就能生成水印图片,本地运行很好,但空间运行就不行了,也不报错
lerit 2009-11-03
  • 打赏
  • 举报
回复
代码上来

62,243

社区成员

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

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

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

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