2011-11-08 12 views

Respuesta

16

Aquí es una gran muestra de que he usado - http://weblog.scifihifi.com/2005/06/25/how-to-resize-an-nsimage/

De esa muestra, se puede escribir en el fichero de resizedData - y esto habrá cambiado el tamaño de una salida en formato tiff.

ACTUALIZACIÓN:

aquí viene la categoría de aplicación NSImage, que permite ahorrar ejemplo NSImage con el DIP se especifica:

@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 

se puede utilizar de esta manera:

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

Hola, gracias por el enlace, pero estoy buscando el código para cambiar la resolución de la imagen (DPI/PPI) a 72, 96, 100, 120, 150 y pronto ..., no el tamaño físico de la imagen o crear su miniatura. Por favor, avíseme si conoce alguna ayuda con respecto al cambio de una resolución de imagen DPI/PPI. – AmitSri

+0

este hilo está discutiendo el problema de conversión DPI http://www.cocoadev.com/index.pl?ImageDPI - han resuelto este acceso a NSBitmapImageRep. ¡Buena suerte! – Denis

+0

Hola, gracias de nuevo tomándome el tiempo para darme una referencia. Pero, nuevamente mi pregunta permanece sin respuesta. Necesito un código simple que cambie NSImage/NSBitmapImageRep DPI a uno dado. No entiendo cómo puedo cambiar el DPI componiendo el NSImage existente en uno nuevo. Por favor, proporcióneme una categoría o método de NSImage simple que tomará el NSImage y el nuevo DPI como argumento y devolverá el nuevo NSImage con el DPI pasado. Al guardar ese nuevo NSImage, debe ser equivalente a la imagen ajustada manualmente de la aplicación Preview. – AmitSri

0

Consulte el desarrollador de apple website.
ImageApp.
ImproveYourImage

+0

Hola, gracias ya he comprobado esas aplicaciones, pero no encontré ningún código que me ayude a ajustar la resolución de la imagen directamente en NSImage y guardarla como nueva o sobrescribirla en la existente. avísame si me falta algo. – AmitSri

0

Puede no convierta su imagen a alta resolución. Entonces, ¿quieres comprimir tu imagen o qué?

Si es lo que quiere, puede utilizar: UIImagePNGRepresentation y/o UIImageJPEGRepresentation. Donde se requiere establecer la propiedad de calidad. De acuerdo con la calidad, su tamaño de imagen se reducirá.

+0

Hola, gracias por tu esfuerzo, pero necesito una solución para la aplicación MAC OS no para el iPhone. – AmitSri

Cuestiones relacionadas