【问题标题】:How do I get the cropping frame of the address book image data?如何获取通讯录图像数据的裁剪框?
【发布时间】:2010-07-10 17:32:42
【问题描述】:

AddressBook 框架提供 ABPersonCopyImageData 用于获取每个地址簿条目的联系人图像。这对于图像数据来说非常有用,但用户还可以调整和裁剪图像以用于取景。当我得到图像数据时,我得到的是完整的图像,而不是裁剪后的图像。如何获取用户用于裁剪图像的帧(或者,我如何访问裁剪的图像/数据)?

【问题讨论】:

    标签: iphone addressbook


    【解决方案1】:

    iOS 4.1 增加了一个新方法:ABPersonCopyImageDataWithFormat in ABPerson

    我是这样使用的:

    NSData *imageData = [(NSData *)ABPersonCopyImageDataWithFormat(recordRef, kABPersonImageFormatThumbnail) autorelease];
    

    允许的格式有:

    kABPersonImageFormatThumbnail
    kABPersonImageFormatOriginalSize
    

    这允许您获取原始图像或裁剪后的图像(缩略图)。

    【讨论】:

      【解决方案2】:

      在某种程度上,这是 iOS4 中的一个错误。以前,地址簿 API 返回裁剪后的数据,而在 iOS4 中,它返回整个图像数据。有些人想要一个,有些人想要另一个。我倾向于认为没有裁剪框,​​整个图像数据都是无用的,所以希望这会得到修复......

      【讨论】:

        【解决方案3】:

        我认为不可能得到正确的作物。 裁剪矩形信息存储在由地址簿框架管理的 sqlite 数据库中。 但是客户端的应用程序无法读取其他应用程序的sqlite数据库,根据沙盒结构。

        【讨论】:

        • 框架不是应用程序。 “沙盒”在很大程度上只是基于进程/UID。然而,事实证明 /var/mobile/Library/AddressBook/AddressBookImages.sqlitedb 是可读的,因此即使它可能被认为是“私有的”,也应该可以得到裁剪矩形。
        • 如果sqlite数据库可以查询,那么很多事情都可以解决。诸如自定义标签,此处的裁剪矩形问题以及iOS SDK 4.0之前的商店(ABStore)问题等。我的伙伴尝试过,他说它无法在地址簿框架管理的sqlite数据库上执行命令。也许你可以再试一次。
        猜你喜欢
        • 1970-01-01
        • 2016-11-29
        • 1970-01-01
        • 1970-01-01
        • 2022-08-23
        • 2012-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多