[iPhone Apps]お絵描き動画メーカー(DrawingRecorder)

iPhoneアプリ「お絵描き動画メーカー」をリリースしました。

あなたのお絵描きが動画になる!
[録画開始]ボタンを押せば、キャンバスで描かれたものは全て動画になります。
キャンバスをタッチして絵を描き、背景画像を配置していく過程を動画に出来ます。
Facebook公式アプリでFacebookにアップロードすることが出来ます。

特徴
■iPhone5に対応
■あなたがキャンバスにお絵描きする過程を動画に保存出来ます。
■キャンバスに線を引けます
■キャンバスに写真を配置できます。
■線の太さを調整できます。
■線の色を調整できます。
■背景色を調整できます。
■描いた線を削除できます。
■動画は30fpsで保存されます。
■動画の保存形式はmp4です。

Your drawing becomes an Video !
If you tap [Start Rec] button. All the things drawn at canvas become an mp4 Video.
The process in which the picture is drawn on canvas.You can save it as mp4 video.
The Video can be uploaded to Facebook by official Facebook app.

Features
■This app corresponds to iPhone5.
■Enable to save The process in which the picture is drawn on canvas as mp4 Video.
■Enable to draw line at canvas.
■Enable to set your photo to canvas.
■Enable to adjust line thickness.
■Enable to adjust line color.
■Enable to adjust background color.
■Enable to erase line.
■The Video is 30fps.
■The Video is mp4 format.

お絵描き動画メーカー
お絵描き動画メーカー

DrawingRecorder(English)

お絵描き動画メーカーお絵描き動画メーカー

お絵描き動画メーカーお絵描き動画メーカー

[objective-c]EGODatabase #5 データ追加

EGODatabase*db=[EGODatabase databaseWithPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/database.db"]];
NSString*sql=[NSString stringWithFormat:@"insert into %@ (id,filename) values(%d,%@)",tableName,id,fileName];
EGODatabaseResult*result=[db executeQuery:sql];
if (result.errorCode) {//failed
    return NO;
}
return YES;

参考サイト
enormego/egodatabase · GitHub
https://github.com/enormego/egodatabase

[objective-c]EGODatabase #4 データ取得

EGODatabase*db=[EGODatabase databaseWithPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/database.db"]];
NSString*sql=@"SELECT * FROM tableName WHERE no=1 ORDER BY id;"
EGODatabaseResult*result=[db executeQuery:sql];
if (result.errorCode) {//failed
    return;
}
NSMutableArray*list=[NSMutableArray arrayWithCapacity:[result count]];
for (EGODatabaseRow*row in result) {
    [list addObject:[row stringForColumn:@"name"]];
}

参考サイト
enormego/egodatabase · GitHub
https://github.com/enormego/egodatabase

[objective-c]EGODatabase #3 全テーブル名の取得

EGODatabase*db=[EGODatabase databaseWithPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/database.db"]];
NSString*sql=@"select name from sqlite_master where type = 'table' order by name";
EGODatabaseResult*result=[db executeQuery:sql];
if (result.errorCode) {//failed
    return;
}
NSMutableArray*list=[NSMutableArray arrayWithCapacity:[result count]];
for (EGODatabaseRow*row in result) {
    [list addObject:[row stringForColumn:@"name"]];
}

参考サイト
enormego/egodatabase · GitHub
https://github.com/enormego/egodatabase

[objective-c]UIImageを複製する

CGImageを使う方法

-(UIImage*)getCUIImage:(UIImage*)img{
    return [UIImage imageWithCGImage:[img CGImage]];
}

CGImageを使わない方法

-(UIImage*)getCopyUIImage:(UIImage*)imageToCopy{
    UIGraphicsBeginImageContext(imageToCopy.size);
    [imageToCopy drawInRect:CGRectMake(0, 0, imageToCopy.size.width, imageToCopy.size.height)];
    UIImage *copiedImage =UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();  
    return copiedImage;
}

[objective-c]UIImageを2枚重ねた状態をUIImageにする

UIImageを2枚重ねた状態をUIImageにする

-(UIImage*)getWImage:(UIImage*)bottomImage frontImage:(UIImage*)frontImage{
    int width = bottomImage.size.width;
    int height = bottomImage.size.height;
    
    CGSize newSize = CGSizeMake(width, height);
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 1.0);
    [bottomImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    [frontImage drawInRect:CGRectMake(0,0,newSize.width,newSize.height) blendMode:kCGBlendModeNormal alpha:1.0];
    
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return newImage;
}

[objective-c]EGODatabase #1 テーブル作成

EGODatabaseはスレッドセーフなSQLiteのラッパーです。

-(EGODatabase*)getDB{
    EGODatabase* database = [EGODatabase databaseWithPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents/database.db"]];
    return database;
}
EGODatabase* database=[self getDB];
NSString*sql=[NSString stringWithFormat:@"create table if not exists '%@' (id int,gno int,type int,filename varchar);",tableName];
EGODatabaseResult*result= [database executeQuery:sql];
if (result.errorCode) {//failed
        
}else{//success
        
}

参考サイト
enormego/egodatabase · GitHub
https://github.com/enormego/egodatabase

[objective-c]Documentsフォルダの指定ファイルを削除

-(void)removeFileByPath:(NSString*)path{
    NSFileManager *fm = [NSFileManager defaultManager];
    if (![fm fileExistsAtPath:path]) {
        NSLog(@"no file");
        return;
    }
    NSError *error=nil;
    [fm removeItemAtPath:path error:&error];
    if (error!=nil) {//failed
        NSLog(@"failed to remove %@",[error localizedDescription]);
    }else{
        NSLog(@"Successfully removed:%@",path);
    }
}
NSString* path=[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
path=[path stringByAppendingPathComponent:@"test.png"];
[self removeFileByPath:path]; 

[objective-c]Documentsフォルダのファイル名一覧を出力

-(NSArray*)fileNames:(NSString*)fileName {
    NSString* path=[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    path=[path stringByAppendingPathComponent:fileName]; 
    return [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
}
-(void)traceAllFiles{
    NSArray*t=[self fileNames:@""];
    NSLog(@"traceAllFiles %@",[t description]);
}
[self traceAllFiles];