【发布时间】:2013-05-03 15:49:32
【问题描述】:
我正在尝试使用 .png 图像为图像添加水印 我的 .jpg 和 .png 图像正确添加了水印,但 .tif 和 .gif 图像出现错误。
我在 C# 中做。 我得到了这个错误:
{"不能从具有 索引像素格式。在 System.Drawing.Graphics.FromImage(图像 图片)在 Watermarking.test_image_watermak.button1_Click(Object 发件人,EventArgs e) "}
我的代码
FileStream fs = new FileStream(img, FileMode.Open, FileAccess.Read);
image = Image.FromStream(fs);
int newWaterWidth = (int)((float)image.Width * .30);
int newWaterHeight = (newWaterWidth * watermarkImage.Height) / watermarkImage.Width;
Bitmap resizedWaterm = new Bitmap(newWaterWidth, newWaterHeight);
Graphics g = Graphics.FromImage((Image)resizedWaterm);
g.DrawImage(watermarkImage, 0, 0, newWaterWidth, newWaterHeight);
***Graphics imageGraphics = Graphics.FromImage(image);*** //error at this line
TextureBrush watermarkBrush = new TextureBrush((Image)resizedWaterm);
int x = (image.Width / 2 - resizedWaterm.Width / 2);
int y = (image.Height / 2 - resizedWaterm.Height / 2);
watermarkBrush.TranslateTransform(x, y);
imageGraphics.FillRectangle(watermarkBrush, new Rectangle(new Point(x, y), new Size(resizedWaterm.Width + 1, resizedWaterm.Height)));
var filename = Path.GetFileName(img);
image.Save(outputFolder + "\\" + filename);
对于这些类型的图像,您需要做些什么不同的事情???
【问题讨论】:
-
我会尝试,但我认为这行不通....谢谢@codecaster
-
无论如何你都需要展示你已经尝试过的东西。该问题显示了相同的错误以及解决方案:在图像的副本上绘图 (
img = new Bitmap(img); newGraphics = Graphics.FromImage(img);)。如果您在网上搜索您的错误消息,您会发现这个问题,这是您所期望的。因此,请尝试了解该问题和答案中的内容,然后如果仍然无法解决问题,请使用您尝试过的内容更新您的问题。 -
很抱歉,该解决方案不起作用..我使用文件流并使用该解决方案会出错
-
这就是我所说的“尝试理解该问题和答案中所说的内容”。使用文件流并不重要,因为
Image.FromStream()返回Image。然后,您可以创建一个new Bitmap(Image)并创建一个Graphics对象以在该位图上绘图。正如我链接的问题和答案中所解释的那样。