Voglio ritagliare l'immagine nella mia app per iPhone utilizzando qualsiasi percorso chiuso come UIBezierPath. so che è possibile usare il rettangolo ma voglio un ritaglio in una forma diversa. come se fossi una forma usando il tatto e voglio ritagliare quell'immagine così com'è possibile. qualsiasi suggerimento o aiuto. Grazie in anticipo.Voglio ritagliare l'immagine usando qualsiasi percorso chiuso come UIBezierPath. è possibile nell'applicazione iPhone?
5
A
risposta
2
È possibile ritagliare l'immagine con uno shapelayer. Per farlo devi creare un percorso che sarà usato come bordi per la tua nuova immagine. Dovresti dare un'occhiata a questo question.
CALayer* contentLayer = [CALayer layer];
[contentLayer setFrame:CGRectMake(0, 0, 80, 80)];
CAShapeLayer* mask = [CAShapeLayer layer];
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 10, 10);
CGPathAddLineToPoint(path, NULL, 10, 80);
CGPathAddLineToPoint(path, NULL, 80, 80);
CGPathAddLineToPoint(path, NULL, 80, 10);
mask.path = path;
[contentLayer setContents:(id)[[UIImage imageNamed:@"image.png"] CGImage]];
[contentLayer setMask:mask];
[[self layer]addSublayer:contentLayer];
Qualcosa di simile.
+0
Vitaliy1 puoi inserire qui il codice come ritagliare l'immagine con lo shapelayer ..... –
1
è possibile eseguire questo utilizzando una maschera. puoi creare una maschera usando CGImageMaskCreate
.
se avete bisogno di esempi:
Any idea why this image masking code does not work?
http://mobiledevelopertips.com/cocoa/how-to-mask-an-image.html
0
// In Code Usa:
-(UIImage *)croppedImage
{
UIImage *myImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self.bezierPath closePath];
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0.0, 0.0, 0.0, 0.0);
_b_image = self.bg_imageview.image;
CGSize imageSize = _b_image.size;
CGRect imageRect = CGRectMake(0, 0, imageSize.width, imageSize.height);
UIGraphicsBeginImageContextWithOptions(imageSize, NO, [[UIScreen mainScreen] scale]);
[self.bezierPath addClip];
[_b_image drawInRect:imageRect];
UIImage *croppedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return croppedImage;}
Problemi correlati
- 1. UIBezierPath Sottrai Percorso
- 2. Ritagliare l'immagine usando CGImageCreateWithImageInRect
- 3. Impossibile ritagliare l'immagine usando mini_magick
- 4. Come ritagliare un'immagine in OpenCV usando Python
- 5. Come animare un UIBezierPath
- 6. Animate un UIBezierPath che ritaglia una UIImage
- 7. Come ottenere il percorso inverso di un UIBezierPath
- 8. Il percorso SVG non chiuso sembra essere chiuso
- 9. UIBezierPath interseca
- 10. Ritagliare l'immagine usando PIL in python
- 11. Ritagliare un'immagine al centro usando PIL
- 12. selezionare ... dove id = qualsiasi valore. È possibile?
- 13. È possibile avviare startServce() da qualsiasi thread?
- 14. Come ritagliare un'immagine in iOS
- 15. Come ritagliare un'immagine in Java?
- 16. È possibile eseguire qualsiasi linguaggio eseguibile?
- 17. Get UIBezierpath da mascherare un UIImage
- 18. Come ritagliare un'immagine enorme
- 19. Come ritagliare un'immagine usando jquery ajax e php?
- 20. Come ritagliare un'immagine con php usando jquery imgAreaSelect?
- 21. UIBezierPath Colori linea multipla
- 22. Perché non è possibile riaprire un flusso chiuso (standard)?
- 23. Come ritagliare un'immagine in vb.net?
- 24. linea D3 in qualità di un percorso chiuso
- 25. È possibile riaprire un ramo chiuso in Mercurial?
- 26. Perché è possibile leggere i dati da ByteArrayOutputStream già chiuso?
- 27. UIBezierPath - Animazione Fill
- 28. Come ottenere un bordo su UIBezierPath
- 29. È possibile ottenere qualsiasi ricompensa finanziaria dall'open source
- 30. Hibernate Session è chiuso
non ho mai fatto prima, ma suppongo che è necessario utilizzare mago mascheramento. Prova a leggere questa mela Doc [Guida alla programmazione 2D di quarzo] (https://developer.apple.com/library/ios/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_images/dq_images.html#//apple_ref/doc/uid/TP30001066- CH212-CJBDIJEE). Forse potresti creare un'immagine trasparente con bezierPath a livello di programmazione o tramite l'interazione dell'utente e quindi utilizzare questa immagine come maschera per l'immagine originale. – Gabriele
Il mascheramento è il modo di ottenere. Dai un'occhiata a questo breve esempio http://mobiledevelopertips.com/cocoa/how-to-mask-an-image.html – msg