Método para reduzir uma imagem
Página 1 de 1
Método para reduzir uma imagem
O método seguinte pode ser usado para reduzir uma imagem, recebendo o nome do ficheiro da imagem e a largura (em mm) com que queremos que fique.
Se a imagem for do tipo JPG, ela é substituída. Senão, uma nova imagem com o novo tamanho é criada.
Aqui fica:
Se a imagem for do tipo JPG, ela é substituída. Senão, uma nova imagem com o novo tamanho é criada.
Aqui fica:
- Código:
...
private double MilimeterPerInch = 25.4F;
...
/// <summary>
/// Method used to rezsize a given image
/// </summary>
/// <param name="file">The file name</param>
/// <param name="width">The new image width in milimeters</param>
/// <param name="height">The new image heigth in milimeters</param>
/// <returns></returns>
private string ResizeImage(string file, int widthMM)
{
string result = null;
try
{
if (String.IsNullOrEmpty(file))
{
Debug.WriteLine("File name not defined.");
return result;
}
if (widthMM <= 0)
{
Debug.WriteLine("New width not defined.");
return result;
}
System.Drawing.Image FullsizeImage = System.Drawing.Image.FromFile(file);
System.Drawing.Image NewImage = null;
if (widthMM >= PixelsToMM(FullsizeImage.Width))
{
if (!(file.ToLower().EndsWith("jpg") || file.ToLower().EndsWith("jpeg")))
{
NewImage = FullsizeImage.GetThumbnailImage(FullsizeImage.Width, FullsizeImage.Height, null, IntPtr.Zero);
result = file.Substring(0, file.Length - 3);
result += "jpg";
}
}
else
{
Graphics g = this.CreateGraphics();
int width = (int)(g.DpiX / MilimeterPerInch) * widthMM;
int heigth = (int)(width * FullsizeImage.Height / FullsizeImage.Width);
NewImage = FullsizeImage.GetThumbnailImage(width, heigth, null, IntPtr.Zero);
if (!(file.ToLower().EndsWith("jpg") || file.ToLower().EndsWith("jpeg")))
{
result = file.Substring(0, file.Length - 3);
result += "jpg";
}
else
{
result = file;
}
}
// Clear handle to original file so that we can overwrite
FullsizeImage.Dispose();
if(result!=null)
NewImage.Save(result);
}
catch (Exception e)
{
Debug.WriteLine(e);
return null;
}
return result;
}
/// <summary>
/// Method used to convert pixels to Milimeters
/// </summary>
/// <param name="pixels">The number of pixels</param>
/// <returns>double</returns>
public double PixelsToMM(int pixels)
{
Graphics g = this.CreateGraphics();
return (double) pixels / g.DpiX * MilimeterPerInch;
}
...
Tópicos semelhantes
» GIMP - Como num imagem tornar uma cor transparente
» Execução de método com timeout
» Site oficial
» Addon para Firefox
» Plugin para Gmail
» Execução de método com timeout
» Site oficial
» Addon para Firefox
» Plugin para Gmail
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Ter Set 24, 2019 1:16 pm por jpmartins
» Artigo Bitcoin
Ter Set 24, 2019 1:13 pm por jpmartins
» Novo site para desportistas / New site for athletes
Ter Dez 04, 2018 8:19 am por Admin
» Check used port with the command line
Ter Dez 04, 2018 8:10 am por Admin
» Check the port where mariaDB is running
Seg Dez 03, 2018 4:59 am por Admin
» Check the linux version
Seg Dez 03, 2018 3:12 am por Admin
» Granting rights to a database for a user
Qui Nov 29, 2018 2:04 am por Admin
» Create new user
Qui Nov 29, 2018 2:01 am por Admin
» Change level of password security level
Qui Nov 29, 2018 1:59 am por Admin