ESP32 — JPEGDecoder из SPIFFS
Здравствуйте, я попытался декодировать изображение JPG из FS, поэтому я создаю и загружаю изображение spiffs (используя каталог /data и плагин Arduino Ide)
На каждом jpg у меня одна и та же ошибка: «pjpeg_decode_init() не удалась со статусом 19»
вот мой тот же код:
#include <TFT_eSPI.h> // Аппаратная библиотека
#include <SPI.h>
#include "GfxUi.h"
TFT_eSPI tft = TFT_eSPI(); // Вызов пользовательской библиотеки
#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() {
}
Вывод из серийного номера:
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
===============
@paweb, 👍0
Обсуждение1 ответ
▲ 1
Насколько я могу судить, загрузка в SPIFFS через Arduino IDE не работает с начала 2018 года. Файлы загружаются, но при чтении повреждаются. Сообщается о нескольких исправлениях. Я использую ядро от декабря 2017 года, и оно работает нормально.
,
@Bodmer
Смотрите также:
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Как выбрать альтернативные контакты I2C на ESP32?
- Драйверы для чипа последовательного порта CH9102X
- Как преобразовать форматированный оператор print в строковую переменную?
- ESP32 - "Детектор Браунаута был активирован" при запуске Wi-Fi
- Питание esp32cam от аккумулятора
- Контакты RX и TX на esp32
- ESP32: отключить детектор отключения питания
19 — PJPG_NOT_JPEG https://github.com/Bodmer/JPEGDecoder/blob/master/src/picojpeg.h, @Juraj
вам следует добавить проверку
if (jpeg)
на существование файла., @Juraj