読者です 読者をやめる 読者になる 読者になる

アプリ開発備忘録

PlayStationMobile、Android、UWPの開発備忘録

[PSM]PhotoImportDialogで取得した画像を保存

PSM
PhotoImportDialog hoge = new PhotoImportDialog();
hoge.Open();

if(CommonDialogState.Finished == hoge.State 
    && CommonDialogResult.OK == hoge.Result)
{
    Image image = new Image(hoge.Filename);

    image.Decode();
    image.SaveAs(@"/Documents/test.jpg");

    hoge.Dispose();
}

ボタンのイベントハンドラに上記を書きました。
PC上では上手く動作するのですが実機では画像の選択を待たずにOpenより後の動作をしてしまうので上手くいきません。
これについては下記参考2を参考にしてください。

フォーラムでPlayStationの方にご回答をいただきましてとりあえず動くコードを書くことが出来ました。本当に助かりました。
回答をもらってPhotoImportSampleが読みやすくなったこと読みやすくなったこと。

Select_Startをtrueにすると開始

public static bool Select_Start{get;set;}
private static PhotoImportDialog Select = null;


Updateに記述

bool isDialogOpened = (null != Select);
			
if (!isDialogOpened && Select_Start)
{
    Select = new PhotoImportDialog();
    Select.Open();
    Select_Start = false;
}
			
if (isDialogOpened) {
    if (CommonDialogResult.OK == Select.Result 
       && CommonDialogState.Finished == Select.State) {		
        OnDialogClosed(Select.Result);
    }
}
private static void OnDialogClosed(CommonDialogResult result)
{
	if (result == CommonDialogResult.OK){
	    UpdatePhotoImage();
	}
	
	if (null != Select){
	    Select.Dispose();
	    Select = null;
	}
}
		
private static void UpdatePhotoImage()
{
	using(Image image = new Image(Select.Filename)){
        //画像処理
		image.Decode();
		image.Export("PSM","001.jpg");
	}
}

参考1
https://psm.playstation.net/static/general/all/psm_sdk/1/doc/ja/classSce_1_1PlayStation_1_1Core_1_1Device_1_1PhotoImportDialog.html

参考2
http://community.eu.playstation.com/t5/%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%83%A9%E3%82%A6%E3%83%B3%E3%82%B8/PhotoImportDialog%E3%81%A7%E5%BE%97%E3%81%9F%E7%94%BB%E5%83%8F%E3%82%92%E4%BF%9D%E5%AD%98%E3%81%97%E3%81%9F%E3%81%84/m-p/22945925/highlight/false#M759