Basic flow
This commit is contained in:
parent
7117b2e4a8
commit
15f0d4d5b8
6 changed files with 491 additions and 49 deletions
|
|
@ -51,6 +51,7 @@
|
|||
<ItemGroup>
|
||||
<Compile Include="Class1.cs" />
|
||||
<Compile Include="ImageCreator.cs" />
|
||||
<Compile Include="ImageCreator2.cs" />
|
||||
<Compile Include="PicSettings.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="SinglePicData.cs" />
|
||||
|
|
|
|||
166
CatalogLib/ImageCreator2.cs
Normal file
166
CatalogLib/ImageCreator2.cs
Normal file
|
|
@ -0,0 +1,166 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using CatalogVbLib;
|
||||
|
||||
namespace CatalogLib
|
||||
{
|
||||
public class ImageCreator2
|
||||
{
|
||||
private PicSettings _picSettings = PicSettings.Instance;
|
||||
|
||||
private FileInfo _workFile;
|
||||
|
||||
private Image _workingImage;
|
||||
|
||||
private Rotazione _rotation;
|
||||
|
||||
private ImageFormat _currentFormat;
|
||||
|
||||
private Size _newImageSize;
|
||||
|
||||
private Bitmap _outputImage;
|
||||
|
||||
private DirectoryInfo _destDir;
|
||||
|
||||
private string _nomeFileBig;
|
||||
|
||||
public void Start(FileInfo workFile)
|
||||
{
|
||||
_workFile = workFile;
|
||||
|
||||
_workingImage = Image.FromFile(workFile.FullName);
|
||||
|
||||
_destDir = new DirectoryInfo(_picSettings.DirectoryDestinazione);
|
||||
_nomeFileBig = _workFile.Name;
|
||||
|
||||
CalculateImageSize();
|
||||
|
||||
ElaborazioneTesto();
|
||||
|
||||
ElaborazioneRotazione();
|
||||
|
||||
SetImageFormat();
|
||||
|
||||
|
||||
FinalElaboration();
|
||||
|
||||
//CreaMiniature
|
||||
}
|
||||
|
||||
private void FinalElaboration()
|
||||
{
|
||||
_outputImage = new Bitmap(_workingImage, _newImageSize.Width, _newImageSize.Height);
|
||||
_outputImage.SetResolution(_workingImage.HorizontalResolution, _workingImage.VerticalResolution);
|
||||
|
||||
|
||||
SavePic(_outputImage, Path.Combine(_destDir.FullName, _nomeFileBig));
|
||||
}
|
||||
|
||||
private void SavePic(Bitmap imageToSave, string fileName)
|
||||
{
|
||||
var selectedEncoder = GetEncoder(_currentFormat);
|
||||
var encoder = System.Drawing.Imaging.Encoder.Quality;
|
||||
var encoderParameters = new EncoderParameters(1);
|
||||
|
||||
|
||||
if (Equals(_currentFormat, ImageFormat.Jpeg))
|
||||
{
|
||||
var encoderParameter = new EncoderParameter(encoder, _picSettings.CompressioneJpeg);
|
||||
encoderParameters.Param[0] = encoderParameter;
|
||||
}
|
||||
|
||||
imageToSave.Save(fileName, selectedEncoder,encoderParameters);
|
||||
imageToSave.Dispose();
|
||||
}
|
||||
|
||||
private ImageCodecInfo GetEncoder(ImageFormat format)
|
||||
{
|
||||
var codecs = ImageCodecInfo.GetImageDecoders();
|
||||
|
||||
return codecs.FirstOrDefault(c => c.FormatID == format.Guid);
|
||||
}
|
||||
|
||||
private void ElaborazioneTesto()
|
||||
{
|
||||
if (_picSettings.EnableText)
|
||||
{
|
||||
// todo: elaborazione testo
|
||||
}
|
||||
}
|
||||
|
||||
private void CalculateImageSize()
|
||||
{
|
||||
_newImageSize = new Size(_workingImage.Width, _workingImage.Height);
|
||||
}
|
||||
|
||||
private void ElaborazioneRotazione()
|
||||
{
|
||||
|
||||
_rotation = Rotazione.Normale;
|
||||
|
||||
if (_picSettings.UsaRotazioneAutomatica)
|
||||
{
|
||||
// ci sono dati exif
|
||||
if (_workingImage.PropertyIdList.Length > 0)
|
||||
{
|
||||
ExifReader DatiExif = new ExifReader((Bitmap)_workingImage);
|
||||
|
||||
switch (DatiExif.Orientation)
|
||||
{
|
||||
case ExifReader.Orientations.BottomLeft:
|
||||
|
||||
break;
|
||||
case ExifReader.Orientations.BottomRight:
|
||||
|
||||
break;
|
||||
case ExifReader.Orientations.LeftTop:
|
||||
|
||||
break;
|
||||
case ExifReader.Orientations.LftBottom:
|
||||
//FotoRuotaASinistra = true;
|
||||
_rotation = Rotazione.Sinistra;
|
||||
break;
|
||||
case ExifReader.Orientations.RightBottom:
|
||||
|
||||
break;
|
||||
case ExifReader.Orientations.RightTop:
|
||||
|
||||
break;
|
||||
case ExifReader.Orientations.TopLeft:
|
||||
|
||||
break;
|
||||
case ExifReader.Orientations.TopRight:
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (_rotation == Rotazione.Sinistra)
|
||||
{
|
||||
_workingImage.RotateFlip(RotateFlipType.Rotate270FlipNone);
|
||||
}
|
||||
else
|
||||
if (_rotation == Rotazione.Destra)
|
||||
{
|
||||
_workingImage.RotateFlip(RotateFlipType.Rotate90FlipNone);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetImageFormat()
|
||||
{
|
||||
_currentFormat = _workingImage.RawFormat;
|
||||
if (_picSettings.GeneraleForzaJPG)
|
||||
{
|
||||
_currentFormat = ImageFormat.Jpeg;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -15,7 +15,10 @@ namespace CatalogLib
|
|||
{
|
||||
private static PicSettings _instance = new PicSettings();
|
||||
|
||||
public static PicSettings Instance { get { return _instance; } }
|
||||
public static PicSettings Instance
|
||||
{
|
||||
get { return _instance; }
|
||||
}
|
||||
|
||||
private Dictionary<string, object> _settingsDict = new Dictionary<string, object>();
|
||||
|
||||
|
|
@ -27,8 +30,13 @@ namespace CatalogLib
|
|||
public string SerializeSettings()
|
||||
{
|
||||
return JsonConvert.SerializeObject(_settingsDict);
|
||||
}
|
||||
|
||||
|
||||
public void DeserializeSettings(string serializedData)
|
||||
{
|
||||
_settingsDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(serializedData);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void Set(string key, object value)
|
||||
|
|
@ -43,14 +51,14 @@ namespace CatalogLib
|
|||
}
|
||||
}
|
||||
|
||||
public void SetString(string key, string value )
|
||||
public void SetString(string key, string value)
|
||||
{
|
||||
Set(key, value);
|
||||
}
|
||||
|
||||
public void SetInt(string key, int value)
|
||||
{
|
||||
Set(key,value);
|
||||
Set(key, value);
|
||||
}
|
||||
|
||||
public void SetBool(string key, bool value)
|
||||
|
|
@ -65,46 +73,84 @@ namespace CatalogLib
|
|||
return _settingsDict.ContainsKey(key);
|
||||
}
|
||||
|
||||
public int GetInt(string key)
|
||||
public int GetInt(string key, int defaultValue = 0)
|
||||
{
|
||||
return _settingsDict.ContainsKey(key) ? (int)_settingsDict[key] : 0;
|
||||
}
|
||||
if (!_settingsDict.ContainsKey(key))
|
||||
{
|
||||
SetInt(key, defaultValue);
|
||||
}
|
||||
|
||||
public string GetString(string key)
|
||||
{
|
||||
return _settingsDict.ContainsKey(key) ? (string)_settingsDict[key] : string.Empty;
|
||||
}
|
||||
if (_settingsDict[key] is int) return (int)_settingsDict[key];
|
||||
Debug.WriteLine($"Error while parsing {key}");
|
||||
//return defaultValue;
|
||||
|
||||
int r;
|
||||
|
||||
public bool GetBool(string key)
|
||||
{
|
||||
return _settingsDict.ContainsKey(key) && (bool)_settingsDict[key];
|
||||
if (int.TryParse(_settingsDict[key].ToString(), out r))
|
||||
{
|
||||
SetInt(key, r);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
SetInt(key, defaultValue);
|
||||
}
|
||||
return (int) _settingsDict[key];
|
||||
//return (int) _settingsDict[key];
|
||||
|
||||
//return _settingsDict.ContainsKey(key) ? (int)_settingsDict[key] : defaultValue;
|
||||
}
|
||||
|
||||
|
||||
public object GetObject(string key)
|
||||
public string GetString(string key, string defaultValue = "")
|
||||
{
|
||||
return _settingsDict.ContainsKey(key) ? _settingsDict[key] : null;
|
||||
if (!_settingsDict.ContainsKey(key))
|
||||
{
|
||||
SetString(key, defaultValue);
|
||||
}
|
||||
return (string) _settingsDict[key];
|
||||
|
||||
//return _settingsDict.ContainsKey(key) ? (string)_settingsDict[key] : defaultValue;
|
||||
}
|
||||
|
||||
public bool GetBool(string key, bool defaultValue = false)
|
||||
{
|
||||
if (!_settingsDict.ContainsKey(key))
|
||||
{
|
||||
SetBool(key, defaultValue);
|
||||
return defaultValue;
|
||||
}
|
||||
return (bool) _settingsDict[key];
|
||||
|
||||
|
||||
|
||||
//return _settingsDict.ContainsKey(key) && (bool)_settingsDict[key];
|
||||
}
|
||||
|
||||
|
||||
public object GetObject(string key, object defaultValue = null)
|
||||
{
|
||||
if (!_settingsDict.ContainsKey(key))
|
||||
{
|
||||
Set(key, defaultValue);
|
||||
return defaultValue;
|
||||
}
|
||||
return _settingsDict[key];
|
||||
|
||||
//return _settingsDict.ContainsKey(key) ? _settingsDict[key] : defaultValue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void SetDefaults()
|
||||
{
|
||||
//Set("DirSorgente", string.Empty);
|
||||
//Set("DirDestinazione", string.Empty);
|
||||
//Set("DirAggiornaSottodirectory", false);
|
||||
//Set("DirCreaSottoCartelle", false);
|
||||
//Set();
|
||||
|
||||
}
|
||||
|
||||
public bool DirAggiornaSottoDirectory
|
||||
{
|
||||
get { return this.GetBool("DirAggiornaSottoDirectory"); }
|
||||
set
|
||||
{
|
||||
this.SetBool("DirAggiornaSottoDirectory", value);
|
||||
|
||||
}
|
||||
get { return this.GetBool("DirAggiornaSottoDirectory", true); }
|
||||
set { this.SetBool("DirAggiornaSottoDirectory", value); }
|
||||
}
|
||||
|
||||
public bool Grassetto
|
||||
|
|
@ -187,14 +233,121 @@ namespace CatalogLib
|
|||
public string TestoFirmaStart { get; set; }
|
||||
public string TestoFirmaStartV { get; set; }
|
||||
public bool UsaForzaJpg { get; set; }
|
||||
public string DirectorySorgente { get { return GetString("DirSorgente"); } set { SetString("DirSorgente", value); } }
|
||||
public string DirectoryDestinazione { get { return GetString("DirDestinazione"); } set { SetString("DirDestinazione", value);} }
|
||||
|
||||
public string DirectorySorgente
|
||||
{
|
||||
get { return GetString("DirSorgente"); }
|
||||
set { SetString("DirSorgente", value); }
|
||||
}
|
||||
|
||||
public string DirectoryDestinazione
|
||||
{
|
||||
get { return GetString("DirDestinazione"); }
|
||||
set { SetString("DirDestinazione", value); }
|
||||
}
|
||||
|
||||
public float Margine { get; set; }
|
||||
public float MargVert { get; set; }
|
||||
public string Allineamento { get; set; }
|
||||
public bool GeneraleForzaJPG { get { return GetBool("GeneraleForzaJPG"); } set { SetBool("GeneraleForzaJPG", value);} }
|
||||
public bool GeneraleRotazioneAutomatica { get { return GetBool("GeneraleRotazioneAutomatica"); } set { SetBool("GeneraleRotazioneAutomatica", value); } }
|
||||
public bool GeneraleSovrascriviFile { get { return GetBool("GeneraleSovrascriviFile"); } set { SetBool("GeneraleSovrascriviFile", value); } }
|
||||
|
||||
|
||||
public bool GeneraleForzaJPG
|
||||
{
|
||||
get { return GetBool("GeneraleForzaJPG", true); }
|
||||
set { SetBool("GeneraleForzaJPG", value); }
|
||||
}
|
||||
|
||||
public bool GeneraleRotazioneAutomatica
|
||||
{
|
||||
get { return GetBool("GeneraleRotazioneAutomatica"); }
|
||||
set { SetBool("GeneraleRotazioneAutomatica", value); }
|
||||
}
|
||||
|
||||
public bool GeneraleSovrascriviFile
|
||||
{
|
||||
get { return GetBool("GeneraleSovrascriviFile"); }
|
||||
set { SetBool("GeneraleSovrascriviFile", value); }
|
||||
}
|
||||
|
||||
public bool SubdirCreaSottoCartelle
|
||||
{
|
||||
get { return GetBool("SubdirCreaSottoCartelle"); }
|
||||
set { SetBool("SubdirCreaSottoCartelle", value); }
|
||||
}
|
||||
|
||||
public int SubdirIntervalloFile
|
||||
{
|
||||
get { return GetInt("SubdirIntervalloFile", 99); }
|
||||
set { SetInt("SubdirIntervalloFile", value); }
|
||||
}
|
||||
|
||||
public string SubdirSuffisso
|
||||
{
|
||||
get { return GetString("SubdirSuffisso"); }
|
||||
set { SetString("SubdirSuffisso", value); }
|
||||
}
|
||||
|
||||
public int SubdirCifreContatore
|
||||
{
|
||||
get { return GetInt("SubdirCifreContatore", 2); }
|
||||
set { SetInt("SubdirCifreContatore", value); }
|
||||
}
|
||||
|
||||
public bool SubdirNumerazioneProgressiva
|
||||
{
|
||||
get { return GetBool("SubdirNumerazioneProgressiva", true); }
|
||||
set { SetBool("SubdirNumerazioneProgressiva", value); }
|
||||
}
|
||||
|
||||
public bool SubdirNumerazioneFiles
|
||||
{
|
||||
get { return GetBool("SubdirNumerazioneFiles", false); }
|
||||
set { SetBool("SubdirNumerazioneFiles", value); }
|
||||
}
|
||||
|
||||
public int FotoAltezza
|
||||
{
|
||||
get { return GetInt("FotoAltezza", 2240); }
|
||||
set { SetInt("FotoAltezza", value); }
|
||||
}
|
||||
|
||||
public int FotoLarghezza
|
||||
{
|
||||
get { return GetInt("FotoLarghezza", 2240); }
|
||||
set { SetInt("FotoLarghezza", value); }
|
||||
}
|
||||
|
||||
public int CompressioneJpeg
|
||||
{
|
||||
get { return GetInt("CompressioneJpeg", 85); }
|
||||
set { SetInt("CompressioneJpeg", value); }
|
||||
}
|
||||
|
||||
public bool FotoMantieniDimensioni
|
||||
{
|
||||
get { return GetBool("FotoMantieniDimensioni", true); }
|
||||
set { SetBool("FotoMantieniDimensioni", value); }
|
||||
}
|
||||
|
||||
public string FotoSuffisso
|
||||
{
|
||||
get { return GetString("FotoSuffisso"); }
|
||||
set { SetString("FotoSuffisso", value); }
|
||||
}
|
||||
|
||||
public bool EnableText
|
||||
{
|
||||
get { return GetBool("EnableText", false); }
|
||||
set { SetBool("EnableText", value); }
|
||||
}
|
||||
public bool EnableThumbnails
|
||||
{
|
||||
get { return GetBool("EnableThumbnails", false); }
|
||||
set { SetBool("EnableThumbnails", value); }
|
||||
}
|
||||
public bool EnableLogo
|
||||
{
|
||||
get { return GetBool("EnableLogo", false); }
|
||||
set { SetBool("EnableLogo", value); }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue