gpt4 book ai didi

ios - 在 ios 应用程序中保存和查看图像

转载 作者:行者123 更新时间:2023-11-29 04:13:03 24 4
gpt4 key购买 nike

我刚刚开始开发一个ios应用程序,就像Contact一样。它包括姓名、生日、所属群体(学校、工作)、血型、图像..等。

其中,其他数据可以通过键入插入。但是,图像可以来自拍照、从 Facebook 下载......等。

将图像输入 xcode 是不可能的。因为,另一个图像可以一次又一次地出现。

我该怎么办?请给我建议。

最佳答案

您只需将 libSqlite3.dylib 添加到链接框架和 Lilbraries 并在 .h 文件中声明数据库变量

   //Database Variables
@property (strong, nonatomic) NSString *databasePath;
@property (nonatomic)sqlite3 *contactDB;

将 UIImageView 和名称拖放到该位置...我声明为 imgView。

转到 .m 文件,只需复制并粘贴该代码

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.


NSString *docsDir;
NSArray *dirPaths;

// Get the documents directory
dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = dirPaths[0];

// Build the path to the database file
_databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"images.db"]];
//docsDir NSPathStore2 * @"/Users/gayathiridevi/Library/Application Support/iPhone Simulator/7.0.3/Applications/B5D4D2AF-C613-45F1-B414-829F38344C2A/Documents" 0x0895e160
NSFileManager *filemgr = [NSFileManager defaultManager];

if ([filemgr fileExistsAtPath: _databasePath ] == NO)
{
const char *dbpath = [_databasePath UTF8String];

if (sqlite3_open(dbpath, &_contactDB) == SQLITE_OK)
{
char *errMsg;
const char *sql_stmt = "CREATE TABLE IF NOT EXISTS IMAGETB (ID INTEGER PRIMARY KEY AUTOINCREMENT,URL TEXT UNIQUE, IMAGE BLOB)";

if (sqlite3_exec(_contactDB, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK)
{

NSLog( @"User table Not Created Error: %s", errMsg);
}
else
{
NSLog( @"User table Created: ");
}
sqlite3_close(_contactDB);
}

else {

NSLog( @"DB Not Created");
}
}
[self saveImage];
[self showImage];
}

- (void)saveImage
{

sqlite3_stmt *statement;
const char *dbpath = [_databasePath UTF8String];

if (sqlite3_open(dbpath, &_contactDB) == SQLITE_OK)
{

NSString *insertSQL=@"INSERT INTO IMAGETB(image) VALUES(?)";

if(sqlite3_prepare_v2(_contactDB, [insertSQL cStringUsingEncoding:NSUTF8StringEncoding], -1, &statement, NULL)== SQLITE_OK)
{

UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://lh6.googleusercontent.com/-vJBBGUtpXxk/AAAAAAAAAAI/AAAAAAAAADQ/nfgVPX1n-Q8/photo.jpg"]]];
NSData *imageData=UIImagePNGRepresentation(image);
//sqlite3_bind_text(statement, 1, [@"" UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_blob(statement, 1, [imageData bytes], [imageData length], SQLITE_TRANSIENT);
NSLog(@"Length : %lu", (unsigned long)[imageData length]);

}


if (sqlite3_step(statement) == SQLITE_DONE)
{
NSLog( @"Insert into row id %lld",(sqlite3_last_insert_rowid(_contactDB)));
}
else {

NSLog( @"Error IN INSERT" );
}
sqlite3_finalize(statement);
sqlite3_close(_contactDB);
}
}

- (void)showImage
{

sqlite3_stmt *statement;
const char *dbpath = [_databasePath UTF8String];
int i = 1;
if(sqlite3_open(dbpath,&_contactDB)==SQLITE_OK)

{
NSString *insertSQL = [NSString stringWithFormat:@"Select IMAGE FROM IMAGETB WHERE ID = %d",i];
if(sqlite3_prepare_v2(_contactDB,[insertSQL cStringUsingEncoding:NSUTF8StringEncoding], -1, &statement, NULL) == SQLITE_OK) {
while(sqlite3_step(statement) == SQLITE_ROW) {

int length = sqlite3_column_bytes(statement, 0);
NSData *imageData = [NSData dataWithBytes:sqlite3_column_blob(statement, 0) length:length];

NSLog(@"Length : %lu", (unsigned long)[imageData length]);

if(imageData == nil)
NSLog(@"No image found.");
else
_imgView.image = [UIImage imageWithData:imageData];
NSLog(@"image found.");
}
}
sqlite3_finalize(statement);
}
sqlite3_close(_contactDB);
}

这是我的代码。您可以通过更改 i 值来修复后退和前进按钮以获取详细信息 -(void)显示图像功能

关于ios - 在 ios 应用程序中保存和查看图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14105570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com