TransWikia.com

端末に保存した画像を読み込んだ際に赤字の「?」画像が表示される

スタック・オーバーフロー Asked on December 28, 2020

Unityで開発を行っております。

画像を端末に保存する処理を行っております。

   string l_newName = "";
   l_newName += UnityEngine.Application.productName + "_";
   l_newName += System.DateTime.Now.Year.ToString();
   l_newName += System.DateTime.Now.Month.ToString();
   l_newName += System.DateTime.Now.Day.ToString();
   l_newName += System.DateTime.Now.Hour.ToString();
   l_newName += System.DateTime.Now.Minute.ToString();
   l_newName += System.DateTime.Now.Second.ToString();
   l_newName += "_thumbnail_";
   l_newName += ".jpg";
   string l_save_path = UnityEngine.Application.persistentDataPath + "/thumbnail/" + l_newName;

#if UNITY_IOS
   // iCloudへのバックアップ不要
   UnityEngine.iOS.Device.SetNoBackupFlag( l_save_path );
#endif
   byte[] l_pngData = createReadabeTexture2D(l_sprite.texture).EncodeToJPG(100);
   
   // データ保存
   File.WriteAllBytes( l_save_path, l_pngData );

このように端末に保存しているのですが、この画像を読み込んだ際に赤字の「?」の画像が表示される時があります。
読み込み処理は以下のようにしております。

// ファイルパス画像の読み込み
private Texture2D readTexture( string a_path )
{
   Texture2D l_texture = new Texture2D( 0, 0 );
   if( !System.IO.File.Exists( a_path ) )  return l_texture;
   
   byte[] l_bytes;
   try {
       l_bytes = File.ReadAllBytes( a_path );
       if( l_bytes == null )   return l_texture;
       l_texture.LoadImage(l_bytes);
       l_bytes = null;
   } catch (Exception e){
       l_bytes = null;
       return null;
   }
   return l_texture;
}

読み込みが失敗した処理も入れているのですが、端末上で失敗した際のリカバリー処理も動いていないので、
ファイルがあり、読み込みが成功していると仮定しています。

赤字の「?」が表示される原因も知りたいのですが、失敗した際の検知方法などご存じでしょうか。

よろしくお願い致します。

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP