iOSアプリ:画像(写真)選択画面をUIImagePickerControllerを使って表示する
iphoneで画像選択画面を出すには、ViewControllerの
- (void)viewDidAppear:(BOOL)animated
メソッドを、以下のように書きなおせば良い。
昔は
presentModalViewController:animated:
を使っていたが、これはdeprecatedとして警告が出るようになった。かわりに
presentViewController:animated:completion:
を使う。
if([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypePhotoLibrary]==NO){ NSLog(@"Photo Library not available."); // 写真選択画面(フォトアルバム)は使えない } UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypePhotoLibrary; if([UIImagePickerController isSourceTypeAvailable:sourceType]){ UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker.delegate = self; // pickerのdisFinishPickingMediaWithInfo:を使うため picker.sourceType = sourceType; [self presentViewController:picker animated:YES completion:nil]; }
ここでデリゲートを設定したので、ViewController.h(ヘッダーファイル)にデリゲートに関する記述を追加しておく。
@interface ViewController : UIViewController <UINavigationControllerDelegate,UIImagePickerControllerDelegate> @end
このようにして画像選択画面が表示できるが、これだと画像を選択しただけで終わってしまう。
選択した写真が表示されるようにするには、このviewControllerにUIimageView(*iv)を追加して、そこに画像選択画面から選択したUIImage(*image)を貼り付ける次のようなコードを追加しておけばよい。
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; if(!image){ image = [info objectForKey:UIImagePickerControllerOriginalImage]; } UIImageView *iv = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 300, 300)]; iv.image = image; [self.view addSubview:iv]; [self dismissViewControllerAnimated:YES completion:NULL]; }
その他つまづきそうなところ:
iOSシミュレータの写真ライブラリに画像や写真を追加するには
・シミュレータ画面に画像をドラッグ&ドロップする。
・自動的にサファリで画像が開かれるので、画像を長押ししてフォトライブラリに保存すれば選択できるようになる。
参考リンク:http://nicomelmo.blog118.fc2.com/blog-entry-693.html
iOSシミュレータでhomeボタンを押すには
・Command+Shift+Hを使う
gnuplotで対数グラフと線形グラフを違う値域で同時に描画する
同じグラフの上で、対数のグラフと線形のグラフを重ねたいときがある。
x軸はx1軸とx2軸、y軸はy1軸とy2軸から選ぶようにできる。
x,y,x2,y2のうち、どの軸を表示するかはset borderを使って設定できる。
各軸のラベルは、set y2label "y2label"などとして設定できる。
set border 11 # 1(bottom),2(left),4(up),8(right) myfunc(t) = exp(t) set log y2;unset log y set ytics 20;set y2tics 10; set yrange [-10:100];set y2range [1e-3:1e3]; plot myfunc(x) axes x1y1,myfunc(x) axes x1y2;
gnuplotでfs transparentを使って、薄い色の円を描く方法
もとから入っているredやblueなどの色以外に、もっと薄い色の図形を描くためには、
fs transparentを使う。
unset obj x = 3 y = 4 r = 2 set obj circle at x,y fc rgb "blue" size r fs solid set obj circle at x,-y fc rgb "blue" size r fs transparent solid 0.7 noborder set obj circle at -x,-y fc rgb "blue" size r fs transparent solid 0.5 noborder set obj circle at -x,y fc rgb "blue" size r fs transparent solid 0.3 noborder # 網目 set obj circle at -x,y+1 fc rgb "blue" size r fill transparent pattern 4 plot x lc -1
C言語+gnuplot+popenを使った簡単なアニメーション作成プログラム
popenコマンドを使ってC言語からgnuplotを呼び出す短いプログラム。
$ gcc a.c && ./a.out
でサイン関数のアニメーションが作成される。
a.c
#include <stdio.h> #include <stdlib.h> #include <math.h> double t,dt; int main(){ double t=0,dt=0.01; FILE *gp; gp = popen("gnuplot --persist","w"); fprintf(gp,"set yrange [-1:1]\n"); while(1){ fprintf(gp,"plot %lf*sin(x-%lf)\n",sin(t),t); t+=dt; } pclose(gp); return 0; }
gnuplotの初期設定を変更する:gnuplotrcの場所(Mac)
gnuplotを起動した時のデフォルトの設定(term,line style,line colorなど)が気に入らない場合には
次のようにしてgnuplotrcを編集することにより、デフォルト設定を変更することができる。
ターミナルから
$gnuplot
でgnuplotを起動し、
>show loadpath
とすると、次のようにgnuplotrcが置かれている場所が出る。この場合にはgnuplotrcは
/opt/local/share/gnuplot/4.6
に置かれている。
>exit
として、例えばvimで編集したい場合には
$sudo vim /opt/local/share/gnuplot/4.6/gnuplotrc
で開いて編集すれば良い。ちなみに自分の設定は以下のような感じ。
set size sq set term x11 set border 3 # 1(bottom),2(left),4(up),8(rigbt) set ytics nomirror set xtics nomirror set key right bottom set style line 1 lc 4 pt 6 lw 3 pi -4 lt 1 set style line 2 lc 3 pt 2 lw 3 pi -6 lt 1 set style line 3 lc rgb "forest-green" pt 5 lw 3 pi -3 lt 1 set style line 4 lc rgb "violet" pt 4 lw 3 pi -3 set style line 5 lc rgb "orange" pt 3 lw 3 pi -5 set style line 6 lc rgb "cyan" pt 7 lw 3 set style line 7 lc rgb "blue" pt 8 lw 3 set style line 7 lc rgb "red" pt 9 lw 3
これで、たとえば
gnuplot> plot sin(x) ls 1, cos(x) ls 2, tanh(x) ls 3
「有効なアドレスを入力してください」と出る場合:google analyticsを使ったはてなダイアリーへのアクセス解析
誰も来ないのを承知でアクセス解析なるものをしてみようと思ったので、
http://nick.hateblo.jp/entry/20100626/1277566529
を参考にしてgoogle analyticsと連携させてみた。
googleアカウントを作ってログインし、google analyticsのページから適用するサイトを選ぶ。
ここで「ウェブサイトのURL」に
d.hatena.ne.jp/yanagikn/
と入れたが、「有効なアドレスを入力してください」と出て困った。
ぐぐった結果どうやら、最後のスラッシュを外して
d.hatena.ne.jp/yanagikn
と入力するとうまくいくようだ。
あとは、google analyticsで発行される
UA-XXXXXX-X
のIDを覚えておいて、
はてなダイアリーの「管理」-「設定」-「外部サービス連携」のところでUA-XXXXXX-XのIDを入力すればアクセス解析ができるようになる・・・はず。