前提・実現したいこと
Processingで,スライドショーアプリを作っています.
表示される写真は,アプリ起動時に選択したフォルダの中から,順番に表示されるようにしたいと思っています.
発生している問題・エラーメッセージ
プログラムを書いているPCでは,想定したように動いていますが,アプリ化してRaspberryPi 3 model B(Raspbian 9.1)上で動かそうとすると,切替わった際に表示される画像とされない画像があります.
使用している写真はiPhoneで撮影した画像20枚で合計で40MBくらいです.
ラズパイ側のターミナルには,
The file /home/pi/Desktop/SlideShow/名称未設定フォルダ/._IMG_3371.jpg contains bad image data, or may not be an image.
というようなメッセージが表示されますが,画像のデータをダブルクリックすると表示されるので,画像データは壊れていないと思います.
ラズパイのメモリ不足かと思っていたのですが,ラズパイの右上に表示されている使用メモリは高くても30%程度なので,メモリが原因ではないと考えています.
このような状況で原因が全くわからず困っています.
わかりそうな方,回答よろしくお願いいたします.
該当のソースコード
Processing
1 2PImage img; 3 4int time = 0; 5 6void setup() { 7 //写真を入れるフォルダの選択 8 selectFolder("写真のあるフォルダを選択してください","loadImages"); 9 10 size(600, 600); 11 frameRate(1); 12} 13 14 15int indexOfImage = 0; 16ArrayList<PImage> originalImages = new ArrayList<PImage>(); 17String[] extensions = { 18 ".jpg",".gif",".tga",".png","JPG" 19}; 20void loadImages(File selection){ 21 File[] files = selection.listFiles(); 22 for(int i = 0; i < files.length; i++){ 23 for(String extension : extensions){ 24 if(files[i].getPath().endsWith(extension)){ 25 PImage originalImage = loadImage(files[i].getAbsolutePath()); 26 fitSize(originalImage); 27 originalImages.add(originalImage); 28 } 29 } 30 } 31} 32 33int length = 600; 34void fitSize(PImage img){ 35 while(img.width > 300 || img.height > 450){ 36 img.resize(img.width/2,img.height/2); 37 } 38} 39 40 41void draw() { 42 43 background(0); 44 45 fill(255); 46 if(!originalImages.isEmpty()){ 47 img = originalImages.get(indexOfImage); 48 image(originalImages.get(indexOfImage),450-img.width/2,300-img.height/2+100); 49 } 50 if(time>5){ 51 if(originalImages.size() != 0){ 52 indexOfImage = (indexOfImage+1)%originalImages.size(); 53 } 54 time = 0; 55 } 56 time++; 57}

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。