Frage

Ich entwickle eine iPhone -App, die die Größenordnung und verschmelze Bilder.

Ich möchte zwei Fotos von 1600x1200 aus der Fotobibliothek auswählen und dann beide in ein einzelnes Bild zusammenarbeiten und dieses neue Bild zurück in die Fotobibliothek speichern.

Ich kann jedoch nicht die richtige Größe für das zusammengeführte Bild erhalten.

Ich nehme zwei Bildansichten von Frame 320x480 und setze das Bild der Ansicht auf meine importierten Bilder. Nachdem ich die Bilder manipuliert hatte (Zoomen, Anschneiden, Drehen), speichere ich das Bild auf Album. Wenn ich die Bildgröße überprüfe, wird 600x800 angezeigt. Wie bekomme ich die ursprüngliche Größe von 1600*1200?

Ich bin aus zwei Wochen an diesem Problem festgefahren!

Danke im Voraus.

War es hilfreich?

Lösung 2

Wie folgt gelöst.

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);

Vielen Dank für Ihre Unterstützung, um das Problem zu lösen

Andere Tipps

Der Rahmen der UIImageView hat nichts mit der Größe des angezeigten Bildes zu tun. Wenn Sie ein 1200x1600 Pixel in einem 75x75 -Bildansicht anzeigen, beträgt die Bildgröße im Speicher noch 1200x1600. Irgendwo in der Verarbeitung des Bildes setzen Sie seine Größe zurück.

Sie müssen die Bilder programmatisch hinter den Kulissen ändern und ignorieren, wie sie angezeigt werden. Für die höchste Treue schlage ich vor, die gesamte Verarbeitung auf dem Bild in voller Größe vorzubauen und dann nur das Endergebnis zu ändern. Bei Geschwindigkeit und geringem Speichergebrauch sind die Größe zuerst die Größe kleiner und verarbeiten Sie sie dann bei Bedarf erneut.

ich benutze Trevor Harmons UIImage+Größenänderung Bilder ändern.

Seine Kernmethode sieht so aus:

- (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 rettete mir Dutzende von Menschenstunden, die versuchten, die Größenänderung richtig zu machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top