Título: Renombrar el mismo archivo
Publicado por: Meta en 29 Marzo 2022, 20:58 pm
Buenas: Este programa redimensiona una imagen. Una vez redimensionado y guardado, se tiene que guardar con otro nombre. ¿Hay alguna forma de guardar el archivo con el mismo nombre? Por supuesto, la versión vieja se eliminará. Por ahora este es el código. using System; using System.Drawing; using System.Drawing.Imaging; namespace Cambiar_tamaño_imagen_Consola_01 { internal class Program { public static Image resizeImage(Image imgToResize, Size size) { return (Image )(new Bitmap (imgToResize, size )); } static void Main(string[] args) { #region Configuración ventana. // Título de la ventana. Console.Title = "Cambiar tamaño imagen"; // Tamaño de la ventana, x, y. // Tamaño de la ventana, x, y. const int anchoX = 80; const int altoY = 30; Console.SetWindowSize(anchoX, altoY); // Color de fondo. Console.BackgroundColor = ConsoleColor.Green; // Color de las letras. Console.ForegroundColor = ConsoleColor.Black; // Limpiar pantalla y dejarlo todo en color de fondo. Console.Clear(); // Visible el cursor. Console.CursorVisible = false; #endregion //string path = "E:\\Imagenes\\Imagen.jpg"; string path = @"E:\Imagenes\Imagen.jpg"; Image img = Image.FromFile(path); Bitmap imgbitmap = new Bitmap (img ); if (img != null) { using (Image resizedImage = new Bitmap (img, new Size (20, 20))) { resizedImage.Save(@"E:\Imagenes\Imagen0.jpg", ImageFormat.Jpeg); Console.WriteLine("Imgen redimensionado correctamente."); } } } } }
Saludos.
Título: Re: Renombrar el mismo archivo
Publicado por: Danielㅤ en 29 Marzo 2022, 23:48 pm
Hola, lo que podes hacer es que una vez que has cambiado el tamaño de la imagen, posteriormente podrías abrir esa misma imagen (la que has cargado para cambiarle su tamaño) en modo escritura y guardar en ese archivo -que sería el archivo de la imagen- el contenido binario de la imagen ya modificada, por lo tanto conservaría el mismo nombre pero con su tamaño modificado. Prueba eso y nos comentas.
Saludos
Título: Re: Renombrar el mismo archivo
Publicado por: Meta en 30 Marzo 2022, 22:24 pm
Buenas campeón: Tienes razón, ya funciona. using System; using System.Drawing; using System.IO; using System.Linq; using System.Text.RegularExpressions; namespace Cambia_tamaño_imagen_Consola_04 { internal class Program { static void Main(string[] args) { #region Configuración ventana. // Título de la ventana. Console.Title = "Cambiar tamaño imagen"; // Tamaño de la ventana, x, y. // Tamaño de la ventana, x, y. const int anchoX = 80; const int altoY = 30; Console.SetWindowSize(anchoX, altoY); // Color de fondo. Console.BackgroundColor = ConsoleColor.Green; // Color de las letras. Console.ForegroundColor = ConsoleColor.Black; // Limpiar pantalla y dejarlo todo en color de fondo. Console.Clear(); // Visible el cursor. Console.CursorVisible = false; #endregion // Ruta de la carpeta string path = @"E:\Imagenes"; // Validar la existencia de la carpeta if (!Directory.Exists(path)) { Console.WriteLine("El directorio no existe..."); return; } // Filtramos la búsqueda en toda la carpeta (incluida subcarpetas) y obtenemos // los archivos .jpg | .jpeg | .png | .gif | .bmp | .tif var imageFiles = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories) .Where(f => Regex.IsMatch(f, @"^.+\.(jpg|jpeg|png|gif|bmp|tif)$")) .ToList(); foreach (string imageFile in imageFiles) { string filename = Path.Combine(path, imageFile); byte[] b = File.ReadAllBytes(filename); Image img = Image .FromStream(new MemoryStream (b )); using (Image resizedImage = new Bitmap (img, new Size (20, 20))) { resizedImage.Save(filename); } } Console.WriteLine("Imágenes redimensionadas correctamente..."); Console.WriteLine("Pulse cualquier tecla para salir."); // Pulse cualquier tecla para salir. Console.ReadKey(); } } }
Gracias por la información.
Título: Re: Renombrar el mismo archivo
Publicado por: Serapis en 31 Marzo 2022, 16:39 pm
Es complicar las cosas innecesariamente. Si la imagen primera es de mayor tamaño que la imagen final, entonces la imagen final contendrá tras de sí información que no pertenece a la imagen y que tan solo hace el fichero más grande. Es válido siempre que la imagen final sea igual o más grande que la de origen.
Lo ideal es: 1 - Leer "ImagenA.xxx" 2 - Manipular imagen A 3 - Guardar como "ImagenB.tmp" 4 - Eliminar/mover a otra carpeta(si se precisa conservar) "ImagenA.xxx" 5 - Renombrar "ImagenB.tmp" como "ImagenA.xxx"
Los pasos 4 y 5 son inecesarios si se cambia el paso 3, por 3 - Guardar (en otra carpeta) como "ImagenA.xxx"
|