Domanda

Esecuzione in un problema Ottenere una rappresentazione PNG per un uiimage dopo averlo ruotato con CiaffineTransform.Innanzitutto, ho una categoria su uiimage che ruota un'immagine di 90 gradi in senso orario.Sembra funzionare correttamente quando visualizzato l'immagine ruotata in un uiimageview.

-(UIImage *)cwRotatedRepresentation
{
    // Not very precise, stop yelling at me.
    CGAffineTransform xfrm=CGAffineTransformMakeRotation(-(6.28 / 4.0));
    CIContext *context=[CIContext contextWithOptions:nil];
    CIImage *inputImage=[CIImage imageWithCGImage:self.CGImage];
    CIFilter *filter=[CIFilter filterWithName:@"CIAffineTransform"];
    [filter setValue:inputImage forKey:@"inputImage"];
    [filter setValue:[NSValue valueWithBytes:&xfrm objCType:@encode(CGAffineTransform)] forKey:@"inputTransform"];

    CIImage *result=[filter valueForKey:@"outputImage"];
    CGImageRef cgImage=[context createCGImage:result fromRect:[inputImage extent]];

    return [[UIImage alloc] initWithCIImage:result];
.

}

Tuttavia, quando cerco di ottenere effettivamente un PNG per l'immagine appena ruotata, l'uiimagepnGrepresentation restituisce Nil.

-(NSData *)getPNG
{
    UIImage *myImg=[UIImage imageNamed:@"canada"];
    myImg=[myImg cwRotatedRepresentation];
    NSData *d=UIImagePNGRepresentation(myImg);

    // d == nil :(
    return d;
}
.

è un'immagine centrale che sovrascrive le intestazioni PNG o qualcosa del genere?C'è un modo attorno a questo comportamento, o un mezzo migliore per raggiungere il risultato desiderato di una rappresentazione PNG di un uiimage ruotato di 90 gradi in senso orario?

È stato utile?

Soluzione

Non urlare, ma -m_pi_4 ti darà la costante che desideri con la massima precisione :)

L'unica altra cosa che vedo è probabilmente vuoi usare [risultato risultato] invece di [inputimage extent] a meno che la tua immagine non sia conosciuta.

Non so come ciò causerebbe l'uiimagepnGrepresentation per fallire.Un altro pensiero ... crei un cgimagine e quindi usi il ciimage nell'inteatura, magari usare initwithcgimage fornirebbe risultati migliori.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top