iOSアプリ:画像(写真)選択画面をUIImagePickerControllerを使って表示する

f:id:yanagikn:20140107155145p:plain:w250f:id:yanagikn:20140107155149p:plain:w250

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を使う

iOSシミュレータのサイズを変更するには

 ・iOSを選択して、メニューから「ウインドウ-表示サイズ」で調整する。
f:id:yanagikn:20140107160812p:plain:w400

gnuplotで対数グラフと線形グラフを違う値域で同時に描画する

同じグラフの上で、対数のグラフと線形のグラフを重ねたいときがある。
f:id:yanagikn:20140101191029p:plain

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を使う。

f:id:yanagikn:20130111131451p:plain

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

はてなブログでソースコードを貼る方法

はてなブログでは、ソースコードを >|| ||<で囲めばソースが貼れるということを聞いてやってみた。
が、「見たままモード」「HTMLモード」のどちらでやっても、
プレビューにソースコードがうまく表示されない。

どうやら、「管理」メニューから「設定」を選び、次の画像のように「はてな記法」をオンにしないといけないようだ。

(そういえば、ブログを始めるときの設定で「はてな記法をオンにしますか?」というのがあったような、なかったような…)

[f:id:yanagikn:20141222002331p:plain width:400]

これで、次のように入力すれば、

f:id:yanagikn:20130104065832p:plain

Hello,world

無事できた。めでたしめでたし。

(2014/12/21:画像を更新)

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

としたらxに下の画像が出る。

「有効なアドレスを入力してください」と出る場合: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を入力すればアクセス解析ができるようになる・・・はず。