• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed c# znak wodny - jak ustalić wielkość czcionki

Object Storage Arubacloud
+1 głos
414 wizyt
pytanie zadane 1 lipca 2021 w C# przez Nubet Nowicjusz (190 p.)
zamknięte 2 lipca 2021 przez Nubet

Hej, chce zrobić program który będzie dodawał znak wodny (watermark) do zdjęcia, problem polega na tym że w zależności od wysokości i szerokości zdjęcia czcionka powinna mieć odpowiednią wielkość (czym większe zdjęcie tym większa czcionka) tylko mam problem z ułożeniem dpowiedniego algorytmu. poniżej dodaje mój kod (do poprawnego działania trzeba dodać w nugecie System.drawing.Common) 



using System;
using System.Drawing;
using System.IO;

namespace Watermarking
{
    class Program
    {
        public static string imagePath = "";

        static void Main(string[] args)
        {
            
            Console.WriteLine("Podaj sciezke do pliku ");
            imagePath = Console.ReadLine();
 
            string sourceImagePath = imagePath;
            string targetImagepath = Path.GetDirectoryName(imagePath);
            targetImagepath += "\\";
            targetImagepath += Path.GetFileNameWithoutExtension(imagePath) + "_watermarked";
            targetImagepath += Path.GetExtension(imagePath);

            //Wywolanie voida
            AddWatermark(sourceImagePath, "Watermark", targetImagepath);
            Console.WriteLine("Znak wodny zostal dodany");

        }

        public static void AddWatermark(string sourceImage, string text, string targetImage)
        {
            try
            {
                Image img = Image.FromFile(sourceImage, true);

                int width = img.Width;
                int height = img.Height;
                int font_size = 20;

                Point text_starting_point = new Point(width / 4, height / 2);
                Font text_font = new Font("Helvetica", font_size, FontStyle.Bold, GraphicsUnit.Pixel);

                Color color = Color.FromArgb(255, 0, 0);
                SolidBrush brush = new SolidBrush(color);

                Graphics graphics = Graphics.FromImage(img);
                graphics.DrawString(text, text_font, brush, text_starting_point);
                graphics.Dispose();
                
                img.Save(targetImage);
                img.Dispose();

            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}

 

komentarz zamknięcia: Otrzymałem pomoc

2 odpowiedzi

+2 głosów
odpowiedź 2 lipca 2021 przez VBService Ekspert (252,740 p.)
wybrane 2 lipca 2021 przez Nubet
 
Najlepsza

Możesz spróbować zaznajomić się z np.: 

Graphics.MeasureString Method  [ 1 ]  [ 2 ]

TextRenderer.MeasureText Method  [ 1 ]  [ 2 ]

 

ewentualnie How to determine font size in graphics.DrawString  wink

1
komentarz 2 lipca 2021 przez Nubet Nowicjusz (190 p.)

dzięki heart

0 głosów
odpowiedź 1 lipca 2021 przez reaktywny Nałogowiec (40,990 p.)

Może dynamicznie? Tzn. dostosować do rozmiarów obrazka, tak by tekst zajmował procentowo zawsze taki sam obszar na zdjęciu.

tylko mam problem z ułożeniem dpowiedniego algorytmu

Algorytmu? To jest matematyka z wczesnych klas szkoły podstawowej :)

Podobne pytania

0 głosów
1 odpowiedź 635 wizyt
0 głosów
1 odpowiedź 255 wizyt
pytanie zadane 28 grudnia 2022 w C# przez sisOOO Obywatel (1,370 p.)

92,555 zapytań

141,402 odpowiedzi

319,546 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...