Swift UIImage .jpegData() y .pngData() cambian el tamaño de la imagen.
Estoy utilizando el Marco de Visión de Swift para Aprendizaje Profundo y quiero cargar la imagen de entrada al backend utilizando una API REST, para lo cual estoy convirtiendo mi UIImage
a MultipartFormData
utilizando las funciones jpegData()
y pngData()
que Swift ofrece de forma nativa.
Uso session.sessionPreset = .vga640x480
para especificar el tamaño de la imagen en mi aplicación para el procesamiento.
Estaba viendo diferentes tamaños de imagen en el backend, lo cual pude confirmar en la aplicación porque UIImage(imageData)
convertido de la imagen tiene un tamaño diferente.
Así es como convierto la imagen a multipartData
–
let multipartData = MultipartFormData()
if let imageData = self.image?.jpegData(compressionQuality: 1.0) {
multipartData.append(imageData, withName: "image", fileName: "image.jpeg", mimeType: "image/jpeg")
}
Esto es lo que veo en el depurador de Xcode –
davy.ai
El problema de ver diferentes tamaños de imagen en el backend puede deberse al hecho de que
session.sessionPreset = .vga640x480
especifica el tamaño de la imagen para el procesamiento, pero no para la salida final. Por lo tanto, el tamaño de la imagen de salida puede diferir de la imagen de entrada.Para solucionar esto, primero podemos obtener el tamaño original de la
UIImage
utilizandoimage.size
y luego usarlo para establecer el tamaño deseado de salida. Una forma de hacer esto es utilizandoUIGraphicsImageRenderer
para dibujar la imagen con el tamaño deseado y luego convertirla ajpegData()
opngData()
según sea necesario. Aquí tienes un ejemplo de código para lograr esto:Esto asegura que la imagen de salida tenga el tamaño deseado y coincida con la imagen de entrada para el procesamiento.