Search images recursively
This commit is contained in:
@@ -67,13 +67,37 @@ namespace ImageCrusher
|
||||
return;
|
||||
}
|
||||
|
||||
String destPath = String.Format("{0}/small", path);
|
||||
String destPath;
|
||||
if (path.EndsWith("/") || path.EndsWith("\\"))
|
||||
{
|
||||
path = path.Substring(0, path.Length - 1);
|
||||
}
|
||||
destPath = String.Format("{0}/small", path);
|
||||
string currentPath = path;
|
||||
|
||||
int size = InitialSize;
|
||||
|
||||
lstImagenes_Clean();
|
||||
|
||||
string[] fileNames = Directory.GetFiles(path);
|
||||
ProcessDirectory(currentPath, path, destPath, size);
|
||||
lstImagenes_AddLine("End.");
|
||||
}
|
||||
|
||||
private void ProcessDirectory(string currentPath, string path, string destPath, int size)
|
||||
{
|
||||
string[] fileNames = Directory.GetFiles(currentPath);
|
||||
foreach (string fileName in fileNames)
|
||||
{
|
||||
ProcessFile(fileName, path, destPath, size);
|
||||
}
|
||||
string[] directories = Directory.GetDirectories(currentPath);
|
||||
foreach (string directory in directories)
|
||||
{
|
||||
ProcessDirectory(directory, path, destPath, size);
|
||||
}
|
||||
}
|
||||
|
||||
private void ProcessFile(string fileName, string path, string destPath, int size)
|
||||
{
|
||||
string ext = Path.GetExtension(fileName).ToLower();
|
||||
if (ext == ".png" || ext == ".jpg" || ext == ".jpeg")
|
||||
@@ -81,26 +105,15 @@ namespace ImageCrusher
|
||||
try
|
||||
{
|
||||
Image img = Image.FromFile(fileName);
|
||||
int width = img.Width;
|
||||
int height = img.Height;
|
||||
if (width > height)
|
||||
{
|
||||
height = (int)(height / (width / (double)size));
|
||||
width = size;
|
||||
}
|
||||
else
|
||||
{
|
||||
width = (int)(width / (height / (double)size));
|
||||
height = size;
|
||||
}
|
||||
Image imgThumb = Image_GenerateThumbnail(img, size);
|
||||
|
||||
if (!Directory.Exists(destPath))
|
||||
string fileDirectory = Path.GetDirectoryName(fileName);
|
||||
fileDirectory = fileDirectory.Replace(path, destPath);
|
||||
if (!Directory.Exists(fileDirectory))
|
||||
{
|
||||
Directory.CreateDirectory(destPath);
|
||||
Directory.CreateDirectory(fileDirectory);
|
||||
}
|
||||
|
||||
Image imgThumb = Image_Resize(img, width, height);
|
||||
string newFileName = String.Format("{0}/{1}.small.jpg", destPath, Path.GetFileNameWithoutExtension(fileName));
|
||||
string newFileName = String.Format("{0}/{1}.small.jpg", fileDirectory, Path.GetFileNameWithoutExtension(fileName));
|
||||
imgThumb.Save(newFileName, ImageFormat.Jpeg);
|
||||
|
||||
// Hack: collect garbage now
|
||||
@@ -114,9 +127,24 @@ namespace ImageCrusher
|
||||
}
|
||||
}
|
||||
}
|
||||
lstImagenes_AddLine("End.");
|
||||
}
|
||||
|
||||
private Image Image_GenerateThumbnail(Image img, int size)
|
||||
{
|
||||
int width = img.Width;
|
||||
int height = img.Height;
|
||||
if (width > height)
|
||||
{
|
||||
height = (int)(height / (width / (double)size));
|
||||
width = size;
|
||||
}
|
||||
else
|
||||
{
|
||||
width = (int)(width / (height / (double)size));
|
||||
height = size;
|
||||
}
|
||||
Image imgThumb = Image_Resize(img, width, height);
|
||||
return imgThumb;
|
||||
}
|
||||
|
||||
public Image Image_Resize(Image img, int width, int height)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user