インターネットで画像に自動的に透かしを入れるソリューションを探していたところ、stackoverflowで最適なソリューションを見つけました。質問へのリンクはC# - 特別な方法で写真に透かしを追加する. 心から感謝いたしますアレックス・マスラコフそして漂流する。
私はそのソリューションをいくつかの変更を加えて実装しました。画像の中央に透かしを入れたいのです。私は提供されたソリューションを変更しました。漂流する次のように
private void button1_Click(object sender, EventArgs e)
{
using (Image image = Image.FromFile(@"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg"))
using (Image watermarkImage = Image.FromFile(@"C:\Users\Public\Pictures\Sample Pictures\watermark.png"))
using (Graphics imageGraphics = Graphics.FromImage(image))
using (Brush watermarkBrush = new TextureBrush(watermarkImage))
{
int x = (image.Width - watermarkImage.Width)/2;
int y = (image.Height - watermarkImage.Height)/2;
imageGraphics.FillRectangle(watermarkBrush, new Rectangle(new Point(x, y), watermarkImage.Size));
image.Save(@"C:\Users\Public\Pictures\Sample Pictures\Desert_watermark.jpg");
}
}
ただし、透かしが画像の中央に正しく配置されていません (下の画像を参照)。
訂正してください…
ありがとう
ベストアンサー1
ついに私の質問に対する解決策を見つけました...
修正されたコードの答えは次のとおりです
private void button1_Click(object sender, EventArgs e)
{
using (Image image = Image.FromFile(@"C:\Users\Public\Pictures\Sample Pictures\Desert.jpg"))
using (Image watermarkImage = Image.FromFile(@"C:\Users\Public\Pictures\Sample Pictures\watermark.png"))
using (Graphics imageGraphics = Graphics.FromImage(image))
using (TextureBrush watermarkBrush = new TextureBrush(watermarkImage))
{
int x = (image.Width / 2 - watermarkImage.Width / 2);
int y = (image.Height / 2 - watermarkImage.Height / 2);
watermarkBrush.TranslateTransform(x, y);
imageGraphics.FillRectangle(watermarkBrush, new Rectangle(new Point(x, y), new Size(watermarkImage.Width+1, watermarkImage.Height)));
image.Save(@"C:\Users\Public\Pictures\Sample Pictures\Desert_watermark.jpg");
}
}
Furqan SafdarとAbdias Softwareに感謝します。リンクC# で TextureBrush を使用して異なる高さから画像をタイリングする際の問題この問題を解決するのにも役立ちました
そして皆さんありがとう
最終的に結果