estoy usando el siguiente código (de un blog) para cambiar el tamaño de una imagenimagen redimensionada de error: CGBitmapContextCreate: parámetro no soportado
if (inImage.size.width <= inImage.size.height) {
// Portrait
ratio = inImage.size.height/inImage.size.width;
resizedRect = CGRectMake(0, 0, width, width * ratio);
}
else {
// Landscape
ratio = inImage.size.width/inImage.size.height;
resizedRect = CGRectMake(0, 0, height * ratio, height);
}
CGImageRef imageRef = [inImage CGImage];
CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef);
if (alphaInfo == kCGImageAlphaNone)
alphaInfo = kCGImageAlphaNoneSkipLast;
CGContextRef bitmap = CGBitmapContextCreate(
NULL,
resizedRect.size.width, // width
resizedRect.size.height, // height
CGImageGetBitsPerComponent(imageRef), // really needs to always be 8
4 * resizedRect.size.width, // rowbytes
CGImageGetColorSpace(imageRef),
alphaInfo
);
pero por alguna razón, dependiendo del tamaño me trato de cambiar el tamaño de recibo el siguiente error generado
CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 32 bits/pixel; 3-component colorspace; kCGImageAlphaNoneSkipFirst; XXX bytes/row.
donde XXX difiere según la imagen.
El rect que estoy creando es propotional para la imagen, tomo una relación entre el ancho/alto (según el aspecto) y el ancho/alto objetivo.
He aquí algunos ejemplos (errores, doesnt/X), el tamaño de cambio de tamaño será 50xx o xx50 dependiendo de aspecto:
Source 50x50 69x69
430x320/ X
240x320/ /
272x320/ /
480x419/ X
426x320 X X
480x256 X X
sí (copie y pegue el error formateándolo como una pregunta) sí Acepto que resizedRect.size.width probablemente sea un punto flotante. ¿Podrías explicar un poco más, solo necesito redondear al número entero? –
por favor, acaba de actualizar su respuesta, acabo de lanzar los 3 usos de los valores a int y solucionó el problema. (int) resizedRect.size.width etc –
He editado mi respuesta con más detalle. – Ken