예제 #1
0
        private void Comprimir_Guardar_Imagen(Image image, string r_salida)
        {
            try
            {
                string carpeta_salida = Ruta_Entrada + "\\salida-final";
                if (!File.Exists(carpeta_salida))
                {
                    Directory.CreateDirectory(carpeta_salida);
                }
                r_salida = carpeta_salida + "\\" + r_salida;

                Ruta_Salida = carpeta_salida;


                using (Bitmap bmp1 = new Bitmap(image))
                {
                    ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);

                    System.Drawing.Imaging.Encoder myEncoder =
                        System.Drawing.Imaging.Encoder.Quality;


                    EncoderParameters myEncoderParameters = new EncoderParameters(1);

                    EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 100L);
                    myEncoderParameters.Param[0] = myEncoderParameter;
                    //if (check90.Checked) bmp1.RotateFlip(RotateFlipType.Rotate90FlipX);
                    bmp1.SetResolution(302, 302);
                    bmp1.Save(r_salida, jpgEncoder, myEncoderParameters);
                    return;
                }


                // Get a bitmap. The using statement ensures objects
                // are automatically disposed from memory after use.
                long calidad = 0;
                calidad = long.Parse(track_bar_calidad.Value.ToString());
                using (Bitmap bmp1 = new Bitmap(image))
                {
                    ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);

                    System.Drawing.Imaging.Encoder myEncoder =
                        System.Drawing.Imaging.Encoder.Quality;


                    EncoderParameters myEncoderParameters = new EncoderParameters(1);

                    EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, calidad);
                    myEncoderParameters.Param[0] = myEncoderParameter;
                    if (check90.Checked)
                    {
                        bmp1.RotateFlip(RotateFlipType.Rotate90FlipX);
                    }
                    bmp1.SetResolution(310, 310);
                    bmp1.Save(r_salida, jpgEncoder, myEncoderParameters);
                    return;

                    if (Keys.ToArray().Length > 0 && ImageExt.ConKey)
                    {
                        ImageExt.ListarErrores();
                        ImageExt.getApiValid(Keys);
                        ImageExt.RemoveBackground(r_salida, Keys);
                    }
                    else
                    {
                        contKetMessage++;
                        if (contKetMessage == 1)
                        {
                            MessageBox.Show("¡No tiene key de Remove Background!");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                string es = ex.Message;
            }
        }
예제 #2
0
        private void hilo_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                if (Carga_Uno)
                {
                    RecorrerFolderEntrada();
                }
                else
                {
                    RecorrerFolderEntrada();
                    int  ancho = 0, alto = 0;
                    int  indice         = 0;
                    bool tiene_tamanios = (txt_ancho.Text.Trim().Length != 0 || txt_alto.Text.Trim().Length != 0);
                    //Ruta_Salida = txt_r_salida.Text;
                    //bool existe_salida = (txt_r_salida.Text.Trim().Length > 0);
                    //if (!existe_salida)
                    //{
                    //    MessageBox.Show("¡Para aplicar los cambios, especifique una ruta de salida válida!", "Imagenes", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    //    return;
                    //}
                    //if (!tiene_tamanios)
                    //{
                    //    if (check_tamanios.Checked)
                    //    {
                    //        if (MessageBox.Show("¡No se definieron los cambios en el tamaño!\n¿Desea mantener el tamaño original de las imagenes?", "Imagenes", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
                    //        {
                    //            return;
                    //        }
                    //    }
                    //}
                    progreso.Maximum = tabla_imagenes.Rows.Count - 1;

                    if (tiene_tamanios)
                    {
                        ancho = int.Parse(txt_ancho.Text);
                        alto  = int.Parse(txt_alto.Text);
                    }
                    int cont = 0;
                    Ruta_Entrada = txt_r_entrada.Text.Trim();
                    foreach (string row in imagenes)
                    {
                        try
                        {
                            string nombre           = row;
                            string tamanio_original = dim[cont];
                            string abrir            = Ruta_Entrada + @"\" + nombre;
                            Image  image            = null;
                            image = Image.FromFile(abrir);
                            Comprimir_Guardar_Imagen(image, nombre);
                            hilo.ReportProgress(cont);
                            image.Dispose();
                            cont++;
                            continue;
                            if (!tiene_tamanios)
                            {
                                string[] campos = tamanio_original.Split('-');
                                ancho = int.Parse(campos[0]);
                                alto  = int.Parse(campos[1]);
                            }
                            if (check_dimesion.Checked)
                            {
                                if (!tiene_tamanios)
                                {
                                    image = ImageExt.Resize(image, ancho, alto);
                                }
                                else
                                {
                                    image = ImageExt.ResizeProportional(image, ancho, alto, true);
                                }
                            }
                            else
                            {
                                image = ImageExt.Resize(image, ancho, alto);
                            }

                            abrir = Application.StartupPath + @"\Temp\" + nombre;

                            using (MemoryStream stream = new MemoryStream())
                            {
                                if (File.Exists(abrir))
                                {
                                    File.Delete(abrir);
                                }

                                Comprimir_Guardar_Imagen(image, nombre);
                            }
                            hilo.ReportProgress(cont);
                            image.Dispose();
                            cont++;
                        }
                        catch (Exception ex)
                        {
                            string es = ex.Message;
                        }
                    }

                    //foreach (DataGridViewRow row in tabla_imagenes.Rows)
                    //{
                    //    try
                    //    {
                    //        indice = row.Index;
                    //        string nombre = tabla_imagenes.Rows[indice].Cells["cnombre"].Value.ToString();
                    //        string tamanio_original = tabla_imagenes.Rows[indice].Cells["csize"].Value.ToString();
                    //        string abrir = Ruta_Entrada + @"\" + nombre;
                    //        Image image = null;
                    //        image = Image.FromFile(abrir);
                    //        if (!tiene_tamanios)
                    //        {
                    //            string[] campos = tamanio_original.Split('-');
                    //            ancho = int.Parse(campos[0]);
                    //            alto = int.Parse(campos[1]);
                    //        }
                    //        if (check_dimesion.Checked)
                    //        {
                    //            if (!tiene_tamanios)
                    //            {
                    //                image = ImageExt.Resize(image, ancho, alto);
                    //            }
                    //            else
                    //            {
                    //                image = ImageExt.ResizeProportional(image, ancho, alto, true);
                    //            }

                    //        }
                    //        else
                    //        {
                    //            image = ImageExt.Resize(image, ancho, alto);
                    //        }

                    //        abrir = Application.StartupPath + @"\Temp\" + nombre;

                    //        using (MemoryStream stream = new MemoryStream())
                    //        {
                    //            if (File.Exists(abrir))
                    //            {

                    //                File.Delete(abrir);

                    //            }

                    //            Comprimir_Guardar_Imagen(image, Ruta_Salida + @"\" + nombre);
                    //        }
                    //        hilo.ReportProgress(row.Index);
                    //        image.Dispose();
                    //    }
                    //    catch (Exception ex)
                    //    {
                    //        string es = ex.Message;
                    //    }
                    //}
                    Se_Aplico = true;
                }
            }
            catch (Exception ex)
            {
                string es = ex.Message;
                Se_Aplico = false;
            }
        }