質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

1回答

534閲覧

RaspberryPiとprocessing

退会済みユーザー

退会済みユーザー

総合スコア0

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2019/03/07 09:42

編集2019/03/09 11:49

前提・実現したいこと

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}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Linuxのjpegエンコーダでなにか処理できないオプションとかあるんでしょうかね。
表示出来なかった画像のサンプルでもあればまだこちらでも試せますが、話だけではなんとも。

原因の追求に興味がなくて、とにかく画像が表示出来さえすればよいのであれば、
・画像ファイルを一旦なんらかの画像処理ソフト(Gimpとか)で読み込んでから書き出した(つまりjpegのデコードをやりなおしてみる)ファイルを試す
・画像ファイルのフォーマットを例えばpngなどに変換して表示出来るか試す
あたりでしょうか。

投稿2019/03/09 03:40

thkana

総合スコア7629

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問