标签: nsimage

如何将NSImage保存为新文件

如何将NSImage保存为某个目录中的新文件(png,jpg,...)?

macos cocoa image file nsimage

73
推荐指数
6
解决办法
5万
查看次数

一些图片的NSImage大小不是真正的大小?

我看到有时NSImage大小不是真正的大小(有一些图片)而且CIImage大小总是真实的.我正在测试这个图像.

这是我为测试编写的源代码:

NSImage *_imageNSImage = [[NSImage alloc]initWithContentsOfFile:@"<path to image>"];

NSSize _dimensions = [_imageNSImage size];

[_imageNSImage release];

NSLog(@"Width from CIImage: %f",_dimensions.width);
NSLog(@"Height from CIImage: %f",_dimensions.height);




NSURL *_myURL = [NSURL fileURLWithPath:@"<path to image>"];
CIImage *_imageCIImage = [CIImage imageWithContentsOfURL:_myURL];


NSRect _rectFromCIImage = [_imageCIImage extent];

NSLog(@"Width from CIImage: %f",_rectFromCIImage.size.width);
NSLog(@"Height from CIImage: %f",_rectFromCIImage.size.height);
Run Code Online (Sandbox Code Playgroud)

输出是:

在此输入图像描述

那怎么可能?也许我做错了什么?

macos cocoa core-graphics nsimage

27
推荐指数
3
解决办法
8801
查看次数

如何从NSImage保存PNG文件(视网膜问题)

我正在对图像进行一些操作,在完成之后,我想将图像保存为磁盘上的PNG.我正在做以下事情:

+ (void)saveImage:(NSImage *)image atPath:(NSString *)path {

    [image lockFocus] ;
    NSBitmapImageRep *imageRepresentation = [[NSBitmapImageRep alloc] initWithFocusedViewRect:NSMakeRect(0.0, 0.0, image.size.width, image.size.height)] ;
    [image unlockFocus] ;

    NSData *data = [imageRepresentation representationUsingType:NSPNGFileType properties:nil];
    [data writeToFile:path atomically:YES];
}
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常,但问题出在视网膜mac上,如果我打印NSBitmapImageRep对象,我得到一个不同的大小和像素rect,当我的图像保存在磁盘上时,它的大小是两倍:

$0 = 0x0000000100413890 NSBitmapImageRep 0x100413890 Size={300, 300} ColorSpace=sRGB IEC61966-2.1 colorspace BPS=8 BPP=32 Pixels=600x600 Alpha=YES Planar=NO Format=0 CurrentBacking=<CGImageRef: 0x100414830>
Run Code Online (Sandbox Code Playgroud)

因为我想要保留原始大小,我强制像素大小不要关心视网膜比例:

imageRepresentation.pixelsWide = image.size.width;
imageRepresentation.pixelsHigh = image.size.height;
Run Code Online (Sandbox Code Playgroud)

这次我在打印NSBitmapImageRep对象时得到了正确的大小,但是当我保存文件时,我仍然遇到同样的问题:

$0 = 0x0000000100413890 NSBitmapImageRep 0x100413890 Size={300, 300} ColorSpace=sRGB IEC61966-2.1 colorspace BPS=8 BPP=32 Pixels=300x300 Alpha=YES Planar=NO Format=0 CurrentBacking=<CGImageRef: 0x100414830>
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题,并保留原始像素大小?

macos nsimage image-resizing nsbitmapimagerep retina-display

26
推荐指数
4
解决办法
2万
查看次数

从CGImageRef获取NSImage

我正在尝试在CoreGraphics中处理图像,然后将处理后的图像返回到NSImage保存和显示.我有足够的资源来介绍如何在iOS中执行这些功能,但是辅助方法似乎缺失了NSImage.在iOS中,类方法是imageWithCGImage:,如何在Mac OS中执行此操作?

macos core-graphics nsimage cgimageref

25
推荐指数
1
解决办法
1万
查看次数

如何调整NSImage的大小

NSBitmapImageRepWX H的大小.我创造NSImage并做addRepresentation:.然后我需要调整大小NSImage.我试过setSize方法,但它不起作用.我该怎么办?

macos jpeg objective-c nsimage

21
推荐指数
6
解决办法
2万
查看次数

获取NSImage的正确图像宽度和高度

我使用下面的代码来获取NSImage的宽度和高度:

NSImage *image = [[[NSImage alloc] initWithContentsOfFile:[NSString stringWithFormat:s]] autorelease];
imageWidth=[image size].width;
imageHeight=[image size].height;
NSLog(@"%f:%f",imageWidth,imageHeight);
Run Code Online (Sandbox Code Playgroud)

但有时候imageWidth,imageHeight不会返回正确的值.例如,当我读取图像时,EXIF信息显示:

PixelXDimension = 2272;
PixelYDimension = 1704;
Run Code Online (Sandbox Code Playgroud)

但是imageWidth,imageHeight输出

521:390 
Run Code Online (Sandbox Code Playgroud)

macos cocoa objective-c nsimage

19
推荐指数
2
解决办法
1万
查看次数

如何在NSButton中绘制像图像一样的NSImage(具有深度)?

有没有办法在NSButtons或其他可可界面元素中绘制像图像的NSImage?

以下是示例: 在此输入图像描述 在此输入图像描述

Apple使用带有黑色图标的pdf: 在此输入图像描述

cocoa objective-c draw nsimage

18
推荐指数
1
解决办法
8062
查看次数

如何将几个NSImages合成一个大图像?

我有一组描述图像名称,大小和X/Y位置的对象.该集合按"图层"排序,因此我可以用一种画家的算法合成图像​​.

由此,我可以确定保存所有图像所需的矩形,所以现在我想要做的是:

  • 创建一些缓冲区来保存结果(相当于iPhoneOS调用UIGraphicsContext的NS.)
  • 将所有图像绘制到缓冲区中.
  • 从缓冲区的合成结果中获取新的NSImage.

在iPhoneOS中,这是执行我想要的代码:

UIGraphicsBeginImageContext (woSize);
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [[UIColor clearColor] set];
    CGContextFillRect(ctx, NSMakeRect(0, 0, woSize.width, woSize.height));
    // draw my various images, here.
    // i.e. Various repetitions of [myImage drawAtPoint:somePoint];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是如何在Desktop Cocoa/NS中做到这一点.

谢谢!

cocoa image-manipulation nsimage

15
推荐指数
1
解决办法
5378
查看次数

将NSImage*转换为CGImageRef?

有一种简单的方法可以在10.5中运行吗?

在10.6中,我可以使用nsImage CGImageForProposedRect:NULL上下文:NULL提示:NULL

如果我不使用1b黑白图像(如Group 4 TIFF),我可以使用位图,但cgbitmaps似乎不喜欢这种设置...有没有一般的方法这样做?

我需要这样做,因为我有一个看似只想添加CGImages的IKImageView,但我所拥有的只是NSImages.目前,我正在使用一个私有的setImage:(NSImage*)方法,我真的不会使用...

cocoa core-graphics objective-c nsimage cgimage

15
推荐指数
4
解决办法
3万
查看次数

作为PNG Swift的NSSI的NSI映像

我正在写一个基于iOS应用程序的Mac应用程序.下面的代码将UIImage转换为NSData以上传到Parse.com.

我想为Mac做同样的事情,但我似乎无法将其转换为NSData.我该怎么办?

谢谢

var image = UIImage(named: "SmudgeInc")

let imageData = UIImagePNGRepresentation(image)

let imageFile = PFFile(name:"image.png", data:imageData)
Run Code Online (Sandbox Code Playgroud)

nsimage uiimage nsdata uiimagepngrepresentation parse-platform

15
推荐指数
1
解决办法
9308
查看次数