using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Numerics; using System.Text; using System.Threading.Tasks; using ImageSharp; using ImageSharp.PixelFormats; using SixLabors.Fonts; using Font = SixLabors.Fonts.Font; using FontFamily = SixLabors.Fonts.FontFamily; using FontStyle = SixLabors.Fonts.FontStyle; using Image = ImageSharp.Image; namespace CatalogLib { public class ImgSharpCreator : IImageProcessor { private FileInfo _currentFile; public void Start(FileInfo workFile) { _currentFile = workFile; using (Image image = Image.Load(workFile.FullName)/* new Image(workFile.FullName)*/) { if (PicSettings.Instance.UsaRotazioneAutomatica) { var exif = image.MetaData.ExifProfile; if (exif != null) { var o = exif.GetValue(ExifTag.Orientation); if (o != null) { int v = (int)o.Value; switch (v) { //1 = Horizontal(normal) //2 = Mirror horizontal //3 = Rotate 180 //4 = Mirror vertical //5 = Mirror horizontal and rotate 270 CW //6 = Rotate 90 CW //7 = Mirror horizontal and rotate 90 CW //8 = Rotate 270 CW case 1: break; case 2: break; case 3: //image.Rotate(180f); //image.Rotate(90); image.Rotate(180f); break; case 4: break; case 5: break; case 6: image.Rotate(90); break; case 7: break; case 8: image.Rotate(-90); break; } } } } if (PicSettings.Instance.EnableText) { SetExtraText(image); } //JpegDecoder j = new JpegDecoder(); var va = Vector.IsHardwareAccelerated; //image.Resize(PicSettings.Instance.FotoLarghezza, PicSettings.Instance.FotoAltezza); //image.Resize(2240, 2240); //var fff = FontCollection.SystemFonts.Find(PicSettings.Instance.NomeFont); //var font = new Font(fff, (float)PicSettings.Instance.DimensioneFont, FontStyle.Regular); //image.DrawText("sssssssssssssssssssssssssssssssssssssssssssssss", font, Color.Black, new Vector2(200, 200)); image.Save(Path.Combine(PicSettings.Instance.DirectoryDestinazione, workFile.Name)); //image.Resize(200, 200).Save(""); } } private void SetExtraText(Image image) { if (string.IsNullOrWhiteSpace(PicSettings.Instance.TestoApplicareOrizzontale)) { Debug.WriteLine($"{_currentFile.Name} No text"); return; } var fff = FontCollection.SystemFonts.Find(PicSettings.Instance.NomeFont); //var fff = FontCollection.SystemFonts.Find("Segoe Print"); var font = new Font(fff, (float)PicSettings.Instance.DimensioneFont, FontStyle.Regular); //var font = new Font(fff, 8f, FontStyle.Regular); //Color c = Color.FromHex(FlipRgbString(PicSettings.Instance.ColoreTestoRGB)); Rgba32 g = Rgba32.FromHex(FlipRgbString(PicSettings.Instance.ColoreTestoRGB)); TextMeasurer measurer = new TextMeasurer(); var size = measurer.MeasureText(PicSettings.Instance.TestoApplicareOrizzontale, font, 72); float scalingFactor = Math.Min(image.Width / size.Width, image.Height / size.Height); Font scaledFont = new Font(font, scalingFactor * font.Size); image.DrawText("aaa", scaledFont, g, new Vector2(0, 0)); //image.DrawText(PicSettings.Instance.TestoApplicareOrizzontale, font, Color.Black, ) //image.DrawText(PicSettings.Instance.TestoApplicareOrizzontale, scaledFont, c, new Vector2(0, 0)); //image.DrawText("sssssssssssssssssssssssssssssssssssssssssssssss", font, Color.Black, new Vector2(200, 200)); //ahjsdfhjklasj //double hr = image.MetaData.HorizontalResolution; //double vr = image.MetaData.HorizontalResolution; //image.MetaData.HorizontalResolution = 72; //image.MetaData.VerticalResolution = 72; //image.DrawText("sssssssssssssssssssssssssssssssssssssssssssssss", font, Color.Black, new Vector2(200, 200)); //image.MetaData.HorizontalResolution = hr; //image.MetaData.VerticalResolution = hr; } private string FlipRgbString(string originalString) { string s = string.Concat("#", originalString.Substring(3, 6), originalString.Substring(1, 2)); return s; } } }