设置、读取联络人头像 ---- save UIImage to ABAddressBook

2024-02-07 16:58

本文主要是介绍设置、读取联络人头像 ---- save UIImage to ABAddressBook,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

其中设置和读取联系人头像有两种方法

1、通过系统方法设置

其中要有2个参数  1、UIImage 2、联系人电话号码 

 

extern "C" ABRecordRef ABCFindPersonMatchingPhoneNumber(ABAddressBookRef addressBook,NSString *phoneNumber,int, int);

 

 

ABAddressBookRef addressbook = ABAddressBookCreate();

 

ABRecordRef ref1 = ABCFindPersonMatchingPhoneNumber(addressbook, pn, 0, 0);

int record =  ABRecordGetRecordID(ref1);//获取联络人的recordId

 

ABRecordRef  person = ABAddressBookGetPersonWithRecordID(addressbook, record);//获取联络人的ABRecordRef

 

/

设置联络人图片

UIImage * img = [UIImage imageNamed:@"image.png"];

NSData *dataRef = UIImagePNGRepresentation(img);

ABPersonSetImageData(person, (CFDataRef)dataRef, nil);

ABAddressBookAddRecord(addressbook, person, nil);

ABAddressBookSave(addressbook, nil);

 

CFRelease(addressbook);//create、copy、retrain对应的release

 

读取系统联络人图片

CFDataRef dataRef = ABPersonCopyImageData(person);

UIImage *image = [UIImage imageWithData:(NSData *)dataRef];//这个就是我们要获取的Image的值

[dataRef release];

 

 

注意:用系统方法插入的操作在数据库中保存的时候只会保存缩略图的形式

相当于在数据库中的格式format为0 fromat(分为3中 0为缩略图 1、大号缩略图 2、源图)

 

 

///

///

使用读取数据库的方法来读取 (这里就只说读取,具体的插入也类似)

 

#define DBNAME "/var/mobile/Library/AddressBook/AddressBookImages.sqlitedb"

-(UIImage *) getSystemImage:(int)record_id formatImg:(int) format

{

sqlite3 *m_db;

UIImage *image = nil;

int m_errno;

NSData* dataObj = nil;

m_errno=sqlite3_open(DBNAME,&m_db);

if (m_db==NULL) {

        return nil;

    }

int len;

    char *next;

sqlite3_stmt *st;

    char sql[256];

sprintf(sql,"select data from ABImage where record_id = %d and format = %d",record_id, format);

len = strlen(sql);

m_errno = sqlite3_prepare(m_db, (const char *)sql, len, &st, (const char **)&next);

if (m_errno != SQLITE_OK) 

{

         return nil;

}

m_errno = sqlite3_step(st);

if(m_errno == SQLITE_ROW)

{

int length = sqlite3_column_bytes(st, 0);

const unsigned char*pData = sqlite3_column_text(st, 0);

dataObj = [NSData dataWithBytes:pData length:length];

}

image = [UIImage imageWithData:dataObj];

sqlite3_finalize(st);

sqlite3_close(m_db);

    return image;

}


这篇关于设置、读取联络人头像 ---- save UIImage to ABAddressBook的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/688360

相关文章

如何设置vim永久显示行号

《如何设置vim永久显示行号》在Linux环境下,vim默认不显示行号,这在程序编译出错时定位错误语句非常不便,通过修改vim配置文件vimrc,可以在每次打开vim时永久显示行号... 目录设置vim永久显示行号1.临时显示行号2.永www.chinasem.cn久显示行号总结设置vim永久显示行号在li

Linux:alias如何设置永久生效

《Linux:alias如何设置永久生效》在Linux中设置别名永久生效的步骤包括:在/root/.bashrc文件中配置别名,保存并退出,然后使用source命令(或点命令)使配置立即生效,这样,别... 目录linux:alias设置永久生效步骤保存退出后功能总结Linux:alias设置永久生效步骤

Spring MVC如何设置响应

《SpringMVC如何设置响应》本文介绍了如何在Spring框架中设置响应,并通过不同的注解返回静态页面、HTML片段和JSON数据,此外,还讲解了如何设置响应的状态码和Header... 目录1. 返回静态页面1.1 Spring 默认扫描路径1.2 @RestController2. 返回 html2

四种简单方法 轻松进入电脑主板 BIOS 或 UEFI 固件设置

《四种简单方法轻松进入电脑主板BIOS或UEFI固件设置》设置BIOS/UEFI是计算机维护和管理中的一项重要任务,它允许用户配置计算机的启动选项、硬件设置和其他关键参数,该怎么进入呢?下面... 随着计算机技术的发展,大多数主流 PC 和笔记本已经从传统 BIOS 转向了 UEFI 固件。很多时候,我们也

Java读取InfluxDB数据库的方法详解

《Java读取InfluxDB数据库的方法详解》本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、... 首先,创建一个Java项目,用于撰写代码。接下来,配置所需要的依赖;这里我们就选择可用于与Infl

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

SpringBoot使用Apache POI库读取Excel文件的操作详解

《SpringBoot使用ApachePOI库读取Excel文件的操作详解》在日常开发中,我们经常需要处理Excel文件中的数据,无论是从数据库导入数据、处理数据报表,还是批量生成数据,都可能会遇到... 目录项目背景依赖导入读取Excel模板的实现代码实现代码解析ExcelDemoInfoDTO 数据传输

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab