0

Hello i've try to decode JPG image from FS so, i create and upload spiffs image (using /data directory and Arduino Ide Plugin )

On every jpg i've same error: "pjpeg_decode_init() failed with status 19"

here is my same code:

#include <TFT_eSPI.h> // Hardware-specific library
#include <SPI.h>
#include "GfxUi.h"
TFT_eSPI tft = TFT_eSPI(); // Invoke custom library
#define DEBUG
#define LOAD_SPIFFS
GfxUi ui = GfxUi(&tft);
void writeFile(fs::FS &fs, const char * path, const char * message);
void readFile(fs::FS &fs, const char * path);
void listDir(fs::FS &fs, const char * dirname, uint8_t levels);
void setup(void)
{
 Serial.begin(115200);
 Serial.print("Start");
 SPIFFS.begin(true);
 tft.begin();
 tft.setRotation(3);
 tft.fillScreen(TFT_BLACK);
 listDir(SPIFFS, "/", 0);
 fs::File jpeg = SPIFFS.open("/star.jpg", "r");
 //readFile(SPIFFS, "/star.jpg");
 boolean decoded = JpegDec.decodeFsFile(jpeg);
 Serial.println("===============");
 Serial.println("JPEG image info");
 Serial.println("===============");
 Serial.print ("Width :"); Serial.println(JpegDec.width);
 Serial.print ("Height :"); Serial.println(JpegDec.height);
 Serial.print ("Components :"); Serial.println(JpegDec.comps);
 Serial.print ("MCU / row :"); Serial.println(JpegDec.MCUSPerRow);
 Serial.print ("MCU / col :"); Serial.println(JpegDec.MCUSPerCol);
 Serial.print ("Scan type :"); Serial.println(JpegDec.scanType);
 Serial.print ("MCU width :"); Serial.println(JpegDec.MCUWidth);
 Serial.print ("MCU height :"); Serial.println(JpegDec.MCUHeight);
 Serial.println("===============");
 Serial.println("");
}
void listDir(fs::FS &fs, const char * dirname, uint8_t levels){
 Serial.printf("Listing directory: %s\r\n", dirname);
 File root = fs.open(dirname);
 if(!root){
 Serial.println("- failed to open directory");
 return;
 }
 if(!root.isDirectory()){
 Serial.println(" - not a directory");
 return;
 }
 File file = root.openNextFile();
 while(file){
 if(file.isDirectory()){
 Serial.print(" DIR : ");
 Serial.println(file.name());
 if(levels){
 listDir(fs, file.name(), levels -1);
 }
 } else {
 Serial.print(" FILE: ");
 Serial.print(file.name());
 Serial.print("\tSIZE: ");
 Serial.println(file.size());
 }
 file = root.openNextFile();
 }
}
void readFile(fs::FS &fs, const char * path){
 Serial.printf("Reading file: %s\r\n", path);
 File file = fs.open(path);
 if(!file || file.isDirectory()){
 Serial.println("- failed to open file for reading");
 return;
 }
 Serial.println("- read from file:");
 while(file.available()){
 Serial.write(file.read());
 }
}
void writeFile(fs::FS &fs, const char * path, const char * message){
 Serial.printf("Writing file: %s\r\n", path);
 File file = fs.open(path, FILE_WRITE);
 if(!file){
 Serial.println("- failed to open file for writing");
 return;
 }
 if(file.print(message)){
 Serial.println("- file written");
 } else {
 Serial.println("- frite failed");
 }
}
void loop() {
}

Output from serial:

Listing directory: /
 FILE: /logo.jpg SIZE: 16346
 FILE: /arduino.jpg SIZE: 8426
 FILE: /star.jpg SIZE: 3853
pjpeg_decode_init() failed with status 19 <--- here is
===============
JPEG image info
===============
Width :0
Height :0
Components :0
MCU / row :0
MCU / col :0
Scan type :0
MCU width :0
MCU height :0
===============
asked Sep 26, 2018 at 12:42
2

1 Answer 1

1

as far as I can determine uploading to SPIFFS via the Arduino IDE is broken as of the beginning of 2018. The files are uploaded but are corrupted on a read. There are a few fixes reported. I am using a core from Dec 2017 and that works fine.

answered Oct 24, 2018 at 21:00

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.