2011-11-08 16 views

risposta

16

Ecco un grande campione che ho usato - http://weblog.scifihifi.com/2005/06/25/how-to-resize-an-nsimage/

Da quel campione, è possibile scrivere resizedData al fascicolo - e questo sarà un uscita ridimensionata in formato TIFF.

UPDATE:

ecco che arriva l'attuazione categoria NSImage, che permette di salvare esempio NSImage con specificato DPI:

@interface NSImage (DPIHelper) 
- (void) saveAsImageType: (NSBitmapImageFileType) imageType withDPI: (CGFloat) dpiValue atPath: (NSString *) filePath; 
@end 

@implementation NSImage (DPIHelper) 


- (void) saveAsImageType: (NSBitmapImageFileType) imageType withDPI: (CGFloat) dpiValue atPath: (NSString *) filePath 
{ 
    NSBitmapImageRep *rep = [[self representations] objectAtIndex: 0]; 

    NSSize pointsSize = rep.size; 
    NSSize pixelSize = NSMakeSize(rep.pixelsWide, rep.pixelsHigh); 

    CGFloat currentDPI = ceilf((72.0f * pixelSize.width)/pointsSize.width); 
    NSLog(@"current DPI %f", currentDPI); 

    NSSize updatedPointsSize = pointsSize; 

    updatedPointsSize.width = ceilf((72.0f * pixelSize.width)/dpiValue); 
    updatedPointsSize.height = ceilf((72.0f * pixelSize.height)/dpiValue); 

    [rep setSize:updatedPointsSize]; 

    NSData *data = [rep representationUsingType: imageType properties: nil]; 
    [data writeToFile: filePath atomically: NO]; 

} 

@end 

si può usare in questo modo:

NSImage *theImage2 = [NSImage imageNamed:@"image.jpg"]; 
[theImage2 saveAsImageType:NSJPEGFileType withDPI: 36.0f atPath: @"/Users/<user-name>/image-updated.jpg"]; 
+0

Ciao, grazie per il collegamento, ma sto cercando codice per cambiare la risoluzione dell'immagine (DPI/PPI) a 72, 96, 100, 120, 150 e presto ..., non la dimensione fisica dell'immagine o creare la sua miniatura. Per favore fatemi sapere se siete a conoscenza di qualche aiuto in merito alla modifica di una risoluzione DPI/PPI dell'immagine. – AmitSri

+0

questa discussione sta discutendo il problema della conversione DPI http://www.cocoadev.com/index.pl?ImageDPI - hanno risolto questo accesso a NSBitmapImageRep. In bocca al lupo! – Denis

+0

Ciao, grazie ancora del tempo per fornirmi un riferimento. Ma, ancora una volta la mia domanda rimane senza risposta. Ho bisogno di un codice semplice che cambierà NSImage/NSBitmapImageRep DPI a dato uno. Non capisco come posso modificare il DPI componendo il NSImage esistente in uno nuovo. Fornire una semplice categoria o metodo NSImage che utilizzi NSImage e il nuovo DPI come argomento e restituisca il nuovo NSImage con DPI passato. Al salvataggio, il nuovo NSImage deve essere equivalente all'immagine di anteprima dell'app regolata manualmente. – AmitSri

0

Fare riferimento allo sviluppatore di mele website.
ImageApp.
ImproveYourImage

+0

Ciao, grazie ho già controllato quelle app, ma non ho trovato alcun codice che mi aiuterà a regolare la risoluzione dell'immagine direttamente su NSImage e salvarla come nuova o sovrascriverla su quella esistente. fammi sapere, se mi manca qualcosa. – AmitSri

0

Puoi non convertire l'immagine ad alta risoluzione. Quindi vuoi comprimere la tua immagine o cosa?

Se è quello che vuoi, allora si può usare: UIImagePNGRepresentation e/o UIImageJPEGRepresentation. Dove è necessario impostare la proprietà di qualità. In base alla qualità, le dimensioni dell'immagine verranno ridotte.

+0

Ciao, grazie per il tuo impegno, ma ho bisogno di una soluzione per l'applicazione MAC OS e non per iPhone. – AmitSri

Problemi correlati