Esto es cómo puedo guardar imágenes.

    [HttpPost]
    public ActionResult Create(HttpPostedFileBase file)
    {
        if (file != null)
        {
            var extension = Path.GetExtension(file.FileName);
            var fileName = Guid.NewGuid().ToString() + extension;
            var path = Path.Combine(Server.MapPath("~/Content/Photos"), fileName);
            file.SaveAs(path);

            //...
         }
     }

No quiero mostrar la imagen desde esa ubicación. Quiero, más bien, lea en primer lugar, para su posterior procesamiento.

¿Cómo puedo leer el archivo de imagen en ese caso ?

  • Puedes ser más específico acerca de qué formato se espera en? por ejemplo, una Secuencia, o tal vez algo más?
  • No es cuestión aquí. Preguntas terminan con un signo de interrogación (?).
  • He añadido una pregunta.
  • Todavía no está claro, ya que ‘leer’ tiene varias interpretaciones. ¿Cuál es el propósito de la lectura? He publicado una respuesta sobre cómo «leer» por la carga como una instancia de BitMap, que puede ser utilizado para el procesamiento de píxeles. Si prefieres quiero ‘leerlo’ mediante el procesamiento de los crudos binario, entonces se puede utilizar una Secuencia.
  • Tienes razón, yo no soy lo suficientemente explícito. Esto es lo que estoy tratando de hacer. Desde cargar el archivo de elemento HTML no mantiene el archivo subido, necesito un almacenamiento temporal para mantener la imagen subida. Es por eso que me guarde los archivos a «Conte/Fotos» la ubicación, por lo que puede ser visualizada por el usuario. Una vez que el usuario ha decidido guardar, tengo que guardarlos en la base de datos y borrar el almacenamiento temporal.
  • Voy a actualizar mi respuesta para reflejar cómo se puede cargar una imagen guardada en un byte[], suponiendo que es lo que usted necesita para entrar en la base de datos.
  • Sí, quiero guardar en la base de datos.

InformationsquelleAutor Richard77 | 2011-09-03

1 Comentario

  1. 19

    Actualización: la Lectura de la imagen a un byte[]

    //Load file meta data with FileInfo
    FileInfo fileInfo = new FileInfo(path);
    
    //The byte[] to save the data in
    byte[] data = new byte[fileInfo.Length];
    
    //Load a filestream and put its content into the byte[]
    using (FileStream fs = fileInfo.OpenRead())
    {
        fs.Read(data, 0, data.Length);
    }
    
    //Delete the temporary file
    fileInfo.Delete();
    
    //Post byte[] to database

    Para la historia de amor, aquí está mi respuesta antes de que la cuestión se aclaró.

    ¿Te refieres a la carga como un Mapa de bits instancia?

     BitMap image = new BitMap(path);
    
     //Do some processing
     for(int x = 0; x < image.Width; x++)
     {
         for(int y = 0; y < image.Height; y++)
         {
             Color pixelColor = image.GetPixel(x, y);
             Color newColor = Color.FromArgb(pixelColor.R, 0, 0);
             image.SetPixel(x, y, newColor);
         }
     }
    
    //Save it again with a different name
    image.Save(newPath);
    • Me permite hacerle otra pregunta sólo para aprender más. debido a la forma en que procesan la FileInfo, debo decir que FileInfo tiene la misma naturaleza que HttpPostedFileBase?
    • No, que sirven a propósitos diferentes. FileInfo » proporciona a las propiedades y métodos de instancia para la creación, copiar, eliminar, mover y abrir archivos, y ayuda en la creación de objetos FileStream.’, pero HttpPostedFileBase es un contenedor de datos binarios subido desde la web ‘Encapsula el HTTP objeto intrínseco que proporciona acceso a los archivos individuales que han sido enviados por un cliente.’ Tienen un par de cosas en común, sin embargo.
    • Bien, muchas gracias.

Dejar respuesta

Please enter your comment!
Please enter your name here