2017-07-04 7 views
0

イメージ処理操作のいくつかの段階で、画像がどのように処理されるか(など)を把握しようとしています。スクリーンショットをキャプチャするco-routineが、私はアンドロイドにアプリを構築することを考えるとどのようにプリントアウトPNG画像として)異なる段階で撮影したショットファイルへのtexture2Dの印刷またはデバッグ目的の画像としての

public void CaptureFrame(RectTransform rect) 
{ 
    StartCoroutine(Co_Capture(rect)); 
} 

private IEnumerator Co_Capture(RectTransform rect) 
{ 
    yield return new WaitForEndOfFrame(); 

    _texture = new Texture2D((int)rect.sizeDelta.x, (int)rect.sizeDelta.y); 
    _texture.ReadPixels(new Rect(rect.anchoredPosition.x - (rect.sizeDelta.x * 0.5f), rect.anchoredPosition.y - (rect.sizeDelta.y * 0.5f), rect.sizeDelta.x, rect.sizeDelta.y), 0, 0); 
    _texture.Apply(); 

    OnImageCaptured(new ScreenShotEventArgs(_texture)); 
} 

わかりませんデバイスでは、理想的には、画像をフォルダのどこかに保存したいと思っています(Unity3D Editor)と同様に、そのデバイスのdataフォルダにあります。 Debug.Logと似たようなメッセージが表示され、コードのどの部分に到達したかを確認するメッセージが表示されます。

どのようなオプションがありますかUnity3DやAndroidタブレットで画像/画像を保存するためのコード/コマンド/メソッドとは何ですか?開発者はさまざまな段階や処理で画像を見ることができますか?

+2

タイトルと本文はどちらも紛らわしいものです。画像を印刷する??私にとって、あなたはスクリーンショットを撮って保存しておき、それをロードしたいように見えます。そうですか? – Programmer

+0

@Programmerはい、正確です。私は、 '' byte [] debugImage1 = _texture.EncodeToPNG(); ''と '' File.WriteAllBytes(Application.dataPath + "/../Img1.png"、debugImage1);を使用するべきであることを理解しました;よりよい選択肢がありますか?基本的には、テキストを認識する前にTesseractがイメージに何をするかを調べようとしているので、Tessのさまざまなイメージ処理ステップの結果を確認する必要があります。 – Joshua

答えて

1

あなたはコメントの部分にその一部を載せています。 EncodeToPNG()を使用してバイト配列に変換し、File.WriteAllBytesで保存します。あなたはでした。が正しいですか?

Android、iOS、その他のプラットフォームで動作させる場合は、Application.persistentDataPathに保存してください。 Application.persistentDataPathに直接保存するのではなく、フォルダに保存する必要があります。

だからApplication.persistentDataPath+"/yourfoldername/imagename.png"であるはずです。

また、上記のようにフォルダが必要なサンドボックスに直接書き込むため、Application.persistentDataPath+"/imagename.png"はiOSで失敗します。

最後に、+を使用してパスを連結していることがわかりました。それを避け、代わりにPath.Combineを使用してください。

string tempPath = Path.Combine(Application.persistentDataPath, "yourfoldername"); 
tempPath = Path.Combine(tempPath, "yourfoldername.png"); 
1

これは、すべてのデバイス上で有効な、公共の場所でImg1.pngとしてテクスチャを保存します。

File.WriteAllBytes(Path.Combine(Application.persistentDataPath + "Img1.png"), _texture.EncodeToPng()); 
関連する問題