我正在尋找一種在圖像上添加水印的方法,最小質量損失最小。任何人都可以幫我嗎?水印可以是文字或圖像。在圖像上添加水印
Q
在圖像上添加水印
0
A
回答
1
這個怎麼樣方法
public static void AddWaterMark(MemoryStream ms, string watermarkText, MemoryStream outputStream)
{
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
Graphics gr = Graphics.FromImage(img);
Font font = new Font("Tahoma", (float)40);
Color color = Color.FromArgb(50, 241, 235, 105);
double tangent = (double)img.Height/(double)img.Width;
double angle = Math.Atan(tangent) * (180/Math.PI);
double halfHypotenuse = Math.Sqrt((img.Height * img.Height) + (img.Width * img.Width))/2;
double sin, cos, opp1, adj1, opp2, adj2;
for (int i = 100; i > 0; i--)
{
font = new Font("Tahoma", i, FontStyle.Bold);
SizeF sizef = gr.MeasureString(watermarkText, font, int.MaxValue);
sin = Math.Sin(angle * (Math.PI/180));
cos = Math.Cos(angle * (Math.PI/180));
opp1 = sin * sizef.Width;
adj1 = cos * sizef.Height;
opp2 = sin * sizef.Height;
adj2 = cos * sizef.Width;
if (opp1 + adj1 < img.Height && opp2 + adj2 < img.Width)
break;
//
}
StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Center;
stringFormat.LineAlignment = StringAlignment.Center;
gr.SmoothingMode = SmoothingMode.AntiAlias;
gr.RotateTransform((float)angle);
gr.DrawString(watermarkText, font, new SolidBrush(color), new Point((int)halfHypotenuse, 0), stringFormat);
gr.DrawImage(position, size, overlayImage) // It helps if your image-to-overlay is loaded from a PNG file (with transparency) to produce the best quality.
img.Save(outputStream, ImageFormat.Jpeg);
}
+0
此方法是否以高質量保存具有水印的圖像? – Alexandre
+0
是的,它應該是.... – rockyashkumar
+0
它不會編譯,因爲這一行--- gr.DrawImage(position,size,overlayImage);位置,大小和overlayImage是未定義的。 – Alexandre
相關問題
- 1. 如何在圖像上添加水印?
- 2. 在圖像上添加水印
- 3. ASP.NET:添加「水印」到圖像上飛
- 4. 將水印圖像添加到圖像
- 5. 將圖像水印添加到圖像水印代碼
- 6. 在上傳的圖像中添加水印圖像
- 7. 在圖像中添加透明水印
- 8. 在PHP中爲圖像添加水印
- 9. 在windows8中在圖像上添加水印
- 10. 將水印添加到圖像
- 11. oracle ordim爲圖像添加水印
- 12. Carrierwave添加水印處理圖像
- 13. 添加水印圖像中的android
- 14. 使用APP在Facebook檔案圖像上添加水印
- 15. 如何在圖像上打印水平線並添加「厚度」?
- 16. 在C圖像下方添加水印,但在打印區域內添加水印
- 17. 上傳水印圖像
- 18. 在Android中添加水印到圖像就像flipboard
- 19. 爲成千上萬的圖像添加動態水印?
- 20. 將水印圖像添加到大圖像opencv4android
- 21. 水印圖像
- 22. 如何將圖像添加到PHP中的圖像上(如水印)
- 23. 在ffmpeg流上添加水印
- 24. 使用PDFlib在PDF上添加「水印」
- 25. 在.jpg上添加.png水印
- 26. 在列表視圖中添加水印
- 27. 在C#中添加一個不可見的圖像水印?
- 28. 如何在Plone 5的圖像添加水印?
- 29. 如何在opencart圖像中添加相同大小的水印
- 30. 在Java中的MySqlDB中爲圖像添加水印
你想可見或不可見水印添加圖像作爲水印圖像? – ObscureRobot
隱形水印中的含義是什麼?透明?相反,我需要一個透明的水印。 – Alexandre
您描述的水印存在於圖像數據中。我正在談論生活在元數據中的水印或隱藏在圖像的數據結構中。一個簡單的例子就是在EXIF數據中插入一個版權字符串。一個更復雜的例子會涉及幾個看起來不相關的EXIF數據片段,它們可以組合成一個校驗和。你喜歡哪個取決於你的目標。 – ObscureRobot