Pregunta

Estoy desarrollando una aplicación para iPhone que cambia de tamaño y se fusiona imágenes.

Quiero seleccionar dos fotos de tamaño de 1600x1200 de la biblioteca de fotos y luego fusionar ambas en una sola imagen y guardar esa nueva imagen de nuevo a la biblioteca de fotos.

Sin embargo, no puedo obtener el tamaño adecuado para la imagen fusionada.

Tomo dos puntos de vista de imagen de 320x480 y marco conjunto de imágenes de la vista a mis imágenes importadas. Después de la manipulación de las imágenes (zoom, recorte, rotación), que a continuación, guardar la imagen en disco. Cuando puedo comprobar el tamaño de la imagen que muestra 600x800. ¿Cómo consigo el tamaño original de 1600 * 1200?

He estado atrapado en este problema desde dos semanas!

Gracias de antemano.

¿Fue útil?

Solución 2

Resuelto como sigue.

UIView *bgView = [[UIView alloc] initwithFrame:CGRectMake(0, 0, 1600, 1200)];
UIGraphicsBeginImageContext(tempView.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, self, nil, nil);

Gracias por todo su apoyo para resolver el problema

Otros consejos

El marco de la UIImageView no tiene nada que ver con el tamaño de la imagen que se muestra. Si muestra un pixel 1200x1600 en un imageView 75x75 el tamaño de la imagen en la memoria sigue siendo 1200x1600. En algún lugar de su procesamiento de la imagen que está reposicionando su tamaño.

Es necesario cambiar el tamaño de las imágenes mediante programación detrás de las escenas e ignorar la forma en que se visualizan. Para más alta fidelidad, sugiero preformación todo el procesamiento de la imagen a tamaño completo y luego cambiar el tamaño de sólo el resultado final. Para la velocidad y el bajo uso de memoria, cambiar el tamaño más pequeño en primer lugar, cambiar el tamaño de proceso y luego de nuevo según sea necesario.

Trevor Harmon UIImage + Cambiar el tamaño para cambiar el tamaño de las imágenes.

Su método básico es el siguiente:

- (UIImage *)resizedImage:(CGSize)newSize
                transform:(CGAffineTransform)transform
           drawTransposed:(BOOL)transpose
     interpolationQuality:(CGInterpolationQuality)quality 
{
    CGRect newRect = CGRectIntegral(CGRectMake(0, 0, newSize.width, newSize.height));
    CGRect transposedRect = CGRectMake(0, 0, newRect.size.height, newRect.size.width);
    CGImageRef imageRef = self.CGImage;

    // Build a context that's the same dimensions as the new size
    CGContextRef bitmap = CGBitmapContextCreate(NULL,
                                                newRect.size.width,
                                                newRect.size.height,
                                                CGImageGetBitsPerComponent(imageRef),
                                                0,
                                                CGImageGetColorSpace(imageRef),
                                                CGImageGetBitmapInfo(imageRef));

    // Rotate and/or flip the image if required by its orientation
    CGContextConcatCTM(bitmap, transform);

    // Set the quality level to use when rescaling
    CGContextSetInterpolationQuality(bitmap, quality);

    // Draw into the context; this scales the image
    CGContextDrawImage(bitmap, transpose ? transposedRect : newRect, imageRef);

    // Get the resized image from the context and a UIImage
    CGImageRef newImageRef = CGBitmapContextCreateImage(bitmap);
    UIImage *newImage = [UIImage imageWithCGImage:newImageRef];

    // Clean up
    CGContextRelease(bitmap);
    CGImageRelease(newImageRef);

    return newImage;
}

Harmon me salvó decenas de horas hombre está tratando de quedarse cambio de tamaño se hace correctamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top