es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo pasar una variable a MagicImage

Estoy tratando de usar MagicImage para convertir HEIC a JPEG, por lo que mi variable newFile.Data contiene un byte[] de la imagen que se envió al servidor. Estoy bastante seguro de que mi código es correcto, pero cuando envío la imagen al servidor, es decir, a la web, se carga en formato HEIC pero la necesito en formato jpeg. Estoy atrapado aquí y no puedo averiguar qué debo hacer.

using (var image = new MagickImage(newFile.Data))
{
    // Establece el formato de salida a jpeg
    image.Format = MagickFormat.Jpeg;

    // Crea un array de bytes que contiene un archivo jpeg
    byte[] data = image.ToByteArray();
}

var currentFiles = 
            _clientFileService.Value.GetFilesByClient(clientId).Where(x => x.ClientFileType == type).Select(x => x.Id).ToList();

_clientFileService.Value.MultipleDelete(currentFiles, null);

_clientFileService
    .Value
    .AddFile(
    new ClientFile
    {
        Data = newFile.Data, // ¿Cómo puedo pasar MagickImage a newFile.Data?
        Guid = Guid.NewGuid()
    });
Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el código proporcionado está convirtiendo correctamente la imagen de HEIC a JPEG utilizando ImageMagick. Sin embargo, el problema está en cómo se pasa la imagen convertida a newFile.Data y se sube al servidor.

    Una solución sería reemplazar newFile.Data por la matriz de bytes data que se generó después de convertir la imagen a JPEG. Esto se puede hacer actualizando la llamada al método AddFile de la siguiente manera:

    _clientFileService.Value.AddFile(
        new ClientFile
        {
            Data = data,
            Guid = Guid.NewGuid()
        });
    

    Esto asegurará que la imagen JPEG convertida se esté subiendo al servidor en lugar de la imagen HEIC original.

Comments are closed.