Как получить свойства каждого пикселя файла jpeg на SD карте?

Mural
Offline
Зарегистрирован: 22.06.2018

Предположим, у нес есть растровый файл достаточно большого разрешения, который мы положили в SD карту. Как получить значение цветов RGB любого нужного пикселя картинки?

b707
Offline
Зарегистрирован: 26.05.2017

а причем тут ардуина? Ищите в гугле работу с конкретным типов файлов - на ПК и ардуине разницы нет. В любом случае читаем файл, раскодируем его в соответсвии с форматом и читаем свойства нужного пикселя. В зависимости от типа файла пиксель может быть кодирован явно или вычислятся

Mural
Offline
Зарегистрирован: 22.06.2018

Ардуина нужна как раз, чтобы от компа уйти. А вот насчет декодирования - нет ли уже готовых решений для Ардуины?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Mural пишет:

Ардуина нужна как раз, чтобы от компа уйти. А вот насчет декодирования - нет ли уже готовых решений для Ардуины?

Ищи готовые решения на С/С++ - я тебе страшную тайну открою: Ардуина понимает эти языки.

Mural
Offline
Зарегистрирован: 22.06.2018

Зато я не понимаю.))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Mural пишет:

Зато я не понимаю.))

Тогда ничего не получица.

b707
Offline
Зарегистрирован: 26.05.2017

Mural пишет:

Ардуина нужна как раз, чтобы от компа уйти. А вот насчет декодирования - нет ли уже готовых решений для Ардуины?

JPEG со сжатием достаточно тяжелый в обработке формат, а если еще и картинки большие - ардуина с ее 2к ОЗУ и достаточно медленной математикой может не потянуть, или это потребует нетривиальных усилий программиста.  Проще взять малинку... там может вообще не придется программу писать, найдешь готовое решение. Или, хотя бы. взять "ардуину" помощнее - Мегу. Дуе или СТМ32

Mural
Offline
Зарегистрирован: 22.06.2018

b707 пишет:

Mural пишет:

Ардуина нужна как раз, чтобы от компа уйти. А вот насчет декодирования - нет ли уже готовых решений для Ардуины?

JPEG со сжатием достаточно тяжелый в обработке формат, а если еще и картинки большие - ардуина с ее 2к ОЗУ и достаточно медленной математикой может не потянуть, или это потребует нетривиальных усилий программиста.  Проще взять малинку... там может вообще не придется программу писать, найдешь готовое решение. Или, хотя бы. взять "ардуину" помощнее - Мегу. Дуе или СТМ32

Ну вот я на этом форуме как раз и для того, чтобы найти готовое решение. Будет решение -купить под него железо не проблема.))

Mural
Offline
Зарегистрирован: 22.06.2018

И к тому же, если джипег тяжел - можно и другие форматы попробовть.

b707
Offline
Зарегистрирован: 26.05.2017

Mural пишет:

Ну вот я на этом форуме как раз и для того, чтобы найти готовое решение. Будет решение -купить под него железо не проблема.))

обратитесь в раздел "Ищу исполнителя"

Mural
Offline
Зарегистрирован: 22.06.2018

b707 пишет:

Mural пишет:

Ну вот я на этом форуме как раз и для того, чтобы найти готовое решение. Будет решение -купить под него железо не проблема.))

обратитесь в раздел "Ищу исполнителя"

Обратился, там пока одни флудеры...

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Самый просто для разбора - BMP, но места жрёт, сволочь!

Mural
Offline
Зарегистрирован: 22.06.2018

А сколько конкретно? И в какой момент? Неужели больше 32 гигов?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

А где в Ардуине 32Гига?  Мошт, я не знаю чо?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Тебе уже несколько человек сказали, похеру, что карта памяти, хоть на терабайт, распаковываться рисунок должен в ОЗУ, а его 1 КИЛОБАЙТ, туда даже 1 строка рисунка НЕ ВЛЕЗЕТ.  Тем более, если JPEG, который распаковывается вапще не построчно, а блоками. 

sadman41
Offline
Зарегистрирован: 19.10.2016

DetSimen пишет:

А где в Ардуине 32Гига?  Мошт, я не знаю чо?

На SD-карте, ёмана. Она же вся в память проецируется - не знал?

b707
Offline
Зарегистрирован: 26.05.2017

Mural пишет:

А сколько конкретно? И в какой момент? Неужели больше 32 гигов?

автор, вы бредите. Если картинки у вас больше 20-30к (КИЛОБАЙТ!!!) - забудьте об ардуине, даже самая мощная не потянет.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DetSimen пишет:

распаковываться рисунок должен в ОЗУ, 

Вот BMP как раз можно хоть по пикселу дёргать - он не упакованный, так что и распаковывать нечего.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Mural пишет:

А сколько конкретно? И в какой момент? Неужели больше 32 гигов?

Вы издеваетесь?

Отрывайте свою картинку в любом сраном пэйнте, говорите "сохранить как BMP" и любуйтесь. Я что ли за Вас это делать буду?

Mural
Offline
Зарегистрирован: 22.06.2018

Т.е. для BMP большая оперативка не нужна? А как получить в скрипте необходимый пиксель?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Mural пишет:

А как получить в скрипте необходимый пиксель?

Що, знову? То Вы размер файла сами посмотреть не можете, то вот теперь. Смотрите, блин! Может Вам ещё пол помыть? Сами то что-то делать собираетесь?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Я сегодня необычно добр. Троллить не буду. Жарко, годовщина тргичная, опять же... Неправильное время для издевательства над ближним.

ТС (Топик стартер, это ты, Мурал), уважаемый!

Ты вот пришел  и сюда и в коммерческий раздел с тупейшим вопросом. О чем тебе и сказали образованные люди.

Верю, что не со злым умыслом, а просто по незнанию и детской скрытности.

Так вот открой душу - что ты изобретаешь? Даже если будут троллить и глумиться, я - так точно буду, все равно дадут РЕАЛЬНО много полезных советов.

Ты понимаешь, сколько тут люди знают о контроллерах, микросхемах, СистемОнЧипах и прочих малинах  с апельсинами?

----

С вами, новичками, очень тяжело, потому и начинают общаться с вами - часто с глума. Пока вытянешь идею, сам уж не рад, что связался.

Какой-то принтер, зачем-то распаковывать файл на неподходящем железе? В чем цимес?

Если комп - дорого, то подходящий АРМ, например AllWinner типа Апельсинки, стоит 500-600 рублей в минималке. Скорость головки и память на 1 строку - СТМ32Ф4 - точно хватит, а может Ф1. Цена - те же 300-400 руб. Ф1 - 100р.

Что-то из твоей задачи, возможно, потянет и ардуинка (имееццо ввиду классика типа уно-нано-мега). Только выбрал ты ее, быстрее всего, просто потому, что ничего другого не знаешь... а мы тут - знаем. Глумимся - по-доброму, потому, что все вышесказанное мною, тут все понимают. Я - вот добрый сегодня, и тебе тоже разъяснить решил.

Уфффф...

Mural
Offline
Зарегистрирован: 22.06.2018

Я спрашиваю не про С, в С#  у меня уже есть отслеживание пикселя, но кардинально другим способом. Я спрашиваю про скетч Ардуино. Итк, еще раз вопрос  -как получить параметры необходимого пикселя растрового файла средствами исключительно ардуино. Из обсуждения знатоков этого дела я вижу 4 противоречивых варианта

1.Никак

2 Предварительной обработкой файла сторонней программой с переводом в какой-то другой вид наподобие g-кода,но не векторный. С радостью изучил бы способ,если бы советчик был бы блее конкретен.

3. Формат BMP не требует конвертации и получить можно свойство любого пикселя. К сожалению,советчик пишет много букв, но на вопрос как не отвечает

4. Просто многобукв про крутизну здешних обитателей и необходимость открыть им душу.

b707
Offline
Зарегистрирован: 26.05.2017

Мурал, если вы ждете, что кто-то напишет вам код - не рассчитывайте. Мы можем подсказать, где искать информацию для самостоятельного изучения вопроса, а готовый код пишут в разделе "Ищу исполнителя"

Mural
Offline
Зарегистрирован: 22.06.2018

В разделе Ищу исполнителя ситуация не лучше, там одни тролли, как и здесь. А если ваш совет - см Гугл, то стоило ли так много про это писать? Когда незнакомый человек, к примеру, у меня спрашивает дорогу я или говорю, что не знаю или обьясняю, как могу, хотя мог бы поиздеваться и поглумиться и даже специально его направить в неправильную сторону, ибо он новичок. А после такой реакции я уже  вряд ли буду заказывать программу на данном ресурсе, поскольку амбиции я здесь увидел, а компетентности и даже способности внимательно прочитать вопрос  -нет.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Mural пишет:

4. Просто многобукв про крутизну здешних обитателей и необходимость открыть им душу.

Дебил, блин! Объясни, что ты изобретаешь и тебе скажут на чем это делать.

JPEG раскодировать на ардуино практически невозможно, как невозможно  успеть управлять печатающей головкой... опять же - на какой сторости печати?

Если у тебя стоит задача - обязательно испольтзовать AtMega AVR контроллер, то поясни задачу, можно будет поискать подходящие пути.

Какие "свойства пикселя" в BMP файле, мля? просто читаешь значения RGB и все, описание формата за тебя искать надо?

Готовый код для Ардуино для чтения BMP? - очень врядли кто-то занимался подобной херней, но нужно проверить в Гугле, на английском.  Сам не способен проверить?

вот первая выдача гугла  устаивает?

Этого нельзя делать БЛИН!!!! До обращения на форум?????

sadman41
Offline
Зарегистрирован: 19.10.2016

Mural пишет:

 Из обсуждения знатоков этого дела я вижу 4 противоречивых варианта

...

Вобщем, ни одного дартаньяна. 

Предлагаю к воспроизведению следующую реплику: "Зачем этот форум, если на нем даже простую вещь объяснить не могут"

negavoid
Offline
Зарегистрирован: 09.07.2016

Может, побыть за Д'Артаньяна сегодня :)))

Mural пишет:
3. Формат BMP не требует конвертации и получить можно свойство любого пикселя. К сожалению,советчик пишет много букв, но на вопрос как не отвечает

// If using an Arduino Mega and your sheild does not use the ICSP header for
// SPI, make sure the SD library is configured for 'soft' SPI in the file Sd2Card.h.
// If in doubt, update the library to use 'soft' SPI.
#define UNO 1
#include <Adafruit_GFX.h>        // Core graphics library
#include <AdaLGDP4535TFTLCD.h>   // Hardware-specific library
#include <SD.h>
#include <TrueRandom.h>

#define LCD_RESET A4   // Can alternately just connect to Arduino's reset pin
#define LCD_CS    A3   // Chip Select goes to Analog 3
#define LCD_CD    A2   // Command/Data goes to Analog 2
#define LCD_WR    A1   // LCD Write goes to Analog 1
#define LCD_RD    A0   // LCD Read goes to Analog 0

#define SD_CS     10   // Card select for shield use

Adafruit_TFTLCD  tft( LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET );
uint8_t          spi_save;
File             root;

void setup()
{
  Serial.begin(9600);

  tft.reset();
  tft.begin( tft.readID() );
  tft.setRotation(3);

  Serial.print(F("Initializing SD card..."));
  if (!SD.begin( SD_CS )) {
    Serial.println(F("failed!"));
    return;
  }
  Serial.println(F("OK!"));
  spi_save = SPCR;

  // ------- old way -------
  // root = SD.open("/");
}

void loop()
{
  String bitmap = (String) TrueRandom.random( 2400 ) + ".bmp";
  tft.fillScreen(0);
  bmpDraw( string2char( bitmap ), 0, 0 );
  delay(10000);

  // ------- old way -------
  // showDirectory( root );
  // root.rewindDirectory();
}

char* string2char( String command ) {
  if (command.length() != 0) {
    char *p = const_cast<char*>(command.c_str());
    return p;
  }
}

void showDirectory(File dir)
{
  while (true) {
    // ------- one by one -------
    // File entry = dir.openNextFile();

    // ------- smooth random -------
    File entry;
    for ( short i = 0; i < TrueRandom.random( 25 ); i++ )
    {
      entry = dir.openNextFile();
      if (! entry) {
        break;
      }
      entry.close();
    }
    entry = dir.openNextFile();

    if (! entry) {
      break;
    }

    if (entry.isDirectory()) {
      showDirectory(entry);
    } else {
      tft.fillScreen(0);
      bmpDraw( entry.name(), 0, 0 );
      delay(10000);
    }
    entry.close();
  }
}

// This function opens a Windows Bitmap (BMP) file and
// displays it at the given coordinates.  It's sped up
// by reading many pixels worth of data at a time
// (rather than pixel by pixel).  Increasing the buffer
// size takes more of the Arduino's precious RAM but
// makes loading a little faster.  20 pixels seems a
// good balance.

#define BUFFPIXEL 20

void bmpDraw(char *filename, int x, int y) {
  File     bmpFile;
  int      bmpWidth, bmpHeight;        // W+H in pixels
  uint8_t  bmpDepth;                   // Bit depth (currently must be 24)
  uint32_t bmpImageoffset;             // Start of image data in file
  uint32_t rowSize;                    // Not always = bmpWidth; may have padding
  uint8_t  sdbuffer[3 * BUFFPIXEL];    // pixel in buffer (R+G+B per pixel)
  uint16_t lcdbuffer[BUFFPIXEL];       // pixel out buffer (16-bit per pixel)
  uint8_t  buffidx = sizeof(sdbuffer); // Current position in sdbuffer
  boolean  goodBmp = false;            // Set to true on valid header parse
  boolean  flip    = true;             // BMP is stored bottom-to-top
  int      w, h, row, col;
  uint8_t  r, g, b;
  uint32_t pos = 0, startTime = millis();
  uint8_t  lcdidx = 0;
  boolean  first = true;

  if ((x >= tft.width()) || (y >= tft.height())) return;

  Serial.println();
  Serial.print( F("Loading image '") );
  Serial.print(filename);
  Serial.println('\'');
  // Open requested file on SD card
  SPCR = spi_save;
  if ((bmpFile = SD.open(filename, O_READ)) == NULL) {
    Serial.print("File not found");
    return;
  }

  // Parse BMP header
  if (read16(bmpFile) == 0x4D42) { // BMP signature
    Serial.print(F("File size: ")); Serial.println(read32(bmpFile));
    (void)read32(bmpFile); // Read & ignore creator bytes
    bmpImageoffset = read32(bmpFile); // Start of image data
    Serial.print(F("Image Offset: ")); Serial.println(bmpImageoffset, DEC);
    // Read DIB header
    Serial.print(F("Header size: ")); Serial.println(read32(bmpFile));
    bmpWidth  = read32(bmpFile);
    bmpHeight = read32(bmpFile);
    if (read16(bmpFile) == 1) { // # planes -- must be '1'
      bmpDepth = read16(bmpFile); // bits per pixel
      Serial.print(F("Bit Depth: ")); Serial.println(bmpDepth);
      if ((bmpDepth == 24) && (read32(bmpFile) == 0)) { // 0 = uncompressed

        goodBmp = true; // Supported BMP format -- proceed!
        Serial.print(F("Image size: "));
        Serial.print(bmpWidth);
        Serial.print('x');
        Serial.println(bmpHeight);

        // BMP rows are padded (if needed) to 4-byte boundary
        rowSize = (bmpWidth * 3 + 3) & ~3;

        // If bmpHeight is negative, image is in top-down order.
        // This is not canon but has been observed in the wild.
        if (bmpHeight < 0) {
          bmpHeight = -bmpHeight;
          flip      = false;
        }

        // Crop area to be loaded
        w = bmpWidth;
        h = bmpHeight;
        if ((x + w - 1) >= tft.width())  w = tft.width()  - x;
        if ((y + h - 1) >= tft.height()) h = tft.height() - y;

        // Set TFT address window to clipped image bounds
        SPCR = 0;
        tft.setAddrWindow(x, y, x + w - 1, y + h - 1);

        for (row = 0; row < h; row++) { // For each scanline...
          // Seek to start of scan line.  It might seem labor-
          // intensive to be doing this on every line, but this
          // method covers a lot of gritty details like cropping
          // and scanline padding.  Also, the seek only takes
          // place if the file position actually needs to change
          // (avoids a lot of cluster math in SD library).
          if (flip) // Bitmap is stored bottom-to-top order (normal BMP)
            pos = bmpImageoffset + (bmpHeight - 1 - row) * rowSize;
          else     // Bitmap is stored top-to-bottom
            pos = bmpImageoffset + row * rowSize;
          SPCR = spi_save;
          if (bmpFile.position() != pos) { // Need seek?
            bmpFile.seek(pos);
            buffidx = sizeof(sdbuffer); // Force buffer reload
          }

          for (col = 0; col < w; col++) { // For each column...
            // Time to read more pixel data?
            if (buffidx >= sizeof(sdbuffer)) { // Indeed
              // Push LCD buffer to the display first
              if (lcdidx > 0) {
                SPCR   = 0;
                tft.pushColors(lcdbuffer, lcdidx, first);
                lcdidx = 0;
                first  = false;
              }
              SPCR = spi_save;
              bmpFile.read(sdbuffer, sizeof(sdbuffer));
              buffidx = 0; // Set index to beginning
            }

            // Convert pixel from BMP to TFT format
            b = sdbuffer[buffidx++];
            g = sdbuffer[buffidx++];
            r = sdbuffer[buffidx++];
            lcdbuffer[lcdidx++] = tft.color565(r, g, b);
          } // end pixel
        } // end scanline
        // Write any remaining data to LCD
        if (lcdidx > 0) {
          SPCR = 0;
          tft.pushColors(lcdbuffer, lcdidx, first);
        }
        Serial.print(F("Loaded in "));
        Serial.print(millis() - startTime);
        Serial.println(" ms");
      } // end goodBmp
    }
  }

  bmpFile.close();
  if (!goodBmp) Serial.println("BMP format not recognized.");
}

// These read 16- and 32-bit types from the SD card file.
// BMP data is stored little-endian, Arduino is little-endian too.
// May need to reverse subscript order if porting elsewhere.

uint16_t read16(File f) {
  uint16_t result;
  ((uint8_t *)&result)[0] = f.read();  // LSB
  ((uint8_t *)&result)[1] = f.read();  // MSB
  return result;
}

uint32_t read32(File f) {
  uint32_t result;
  ((uint8_t *)&result)[0] = f.read();  // LSB
  ((uint8_t *)&result)[1] = f.read();
  ((uint8_t *)&result)[2] = f.read();
  ((uint8_t *)&result)[3] = f.read();  // MSB
  return result;
}

Но боюсь, даже и это не спасёт. JPG же обычная ардуина Uno/Nano распаковать не потянет, там декодеру нужна таблица размером больше 2 кб в памяти.

PS А, перечитал первый пост

Mural пишет:
Предположим, у нес есть растровый файл достаточно большого разрешения, который мы положили в SD карту. Как получить значение цветов RGB любого нужного пикселя картинки?

Можно всю систему упростить, класть на SD просто сырой raw (если известны измерения картинки), по три байта на пиксель, и потом считывать их и анализировать, типа r = read_byte( fseek( width*col*3 + row*3 ) ), g = read_byte( fseek( width*col*3 + row*3 + 1) ) etc. Но сделать тут import SuperRawReader, как в шарпе, не выйдет.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Mural пишет:

Я спрашиваю не про С, в С#  у меня уже есть 

Причём тут С# - я Вам дал с полсотни ссылок, где это делается на С++ (на том самом языке, на котором программируется Ардуино).

Mural пишет:

но на вопрос как не отвечает

Я был уверен, что ответил. Дал ссылки с примерами. В примерах пиксели отлично читаются.

Если Вы считаете, что я не ответил, сформулируйте толком, что Вам нужно. Вам нужен готовый скетч для Вашей задачи? Или что?

 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

wdrakula пишет:
просто читаешь значения RGB и все, описание формата за тебя искать надо?
Зачем искать - я ему готовые дал с примерами в полсотни строк. Или он ссылку не открывал, или действительно хочет готовый код.

Mural
Offline
Зарегистрирован: 22.06.2018

 

[/quote]

Дебил, блин! Объясни, что ты изобретаешь и тебе скажут на чем это делать.

JPEG раскодировать на ардуино практически невозможно, как невозможно  успеть управлять печатающей головкой... опять же - на какой сторости печати?

[/quote]

От дебила слышу. Я УЖЕ печатаю, используя Ардуино, как контроллер.

Кроме того, я не говорил, что мне нужно непременно раскодировать сразу ВЕСЬ файл, придурок, а потом его в таком виде хранить в оперативке, я согласен на кусочки, одна строка самого большого файла спокойно влезает.

Библиотека твоя сраная имеет задачу показывать что-то на экранчик  и эту библиотеку все тупо и юзают не один год уже. Ты читать умеешь? Я что-то про экранчик спрашивал?

Короче, счастливо остваться...))

 

negavoid
Offline
Зарегистрирован: 09.07.2016

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Mural пишет:

Библиотека твоя сраная имеет задачу показывать что-то на экранчик

Гы! Это, конечно, полностью меняет код самого jpeg декодера.... ;) ;) ;)

Эх... давненько я не встречал такой сплав тупизны, брехни и амбиций... в коллекцию, АднАзначнА!

sadman41
Offline
Зарегистрирован: 19.10.2016

Всего полджня срача и ардуина уже начала печатать. Боюсь представить, что будет к понедельнику.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Чёт фееричность в последние дни зашкаливает. Футбол что ли влияет?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Ребята! Мне интересно, что они (новички) так жмутся объяснить суть своих задумок? Это они так стесняются или реально верят, что изобрели что-то типа автодворников и щас кааа-ак запатентуют и будут всю оставшуюся жисть срать на золотой унитаз?

Mural
Offline
Зарегистрирован: 22.06.2018

Да, я не заметил ссылку, спасибо, сейчас изучаю.

Пока вижутолько  обработку блоков.

sadman41
Offline
Зарегистрирован: 19.10.2016

wdrakula пишет:

будут всю оставшуюся жисть срать на золотой унитаз?

Если на ардуине такой проджект сделают, то будут именно "на" ))

Mural
Offline
Зарегистрирован: 22.06.2018

Можно всю систему упростить, класть на SD просто сырой raw (если известны измерения картинки), по три байта на пиксель....

 

Вот ваше предложение выглядит самым  разумным пока. А чем лучшеt SuperRawReader?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А чем по большому счёту raw отличается от BMP? Кроме того, что BMP любой просмотрщик показать может и никаких размеров заранее знать не надо?

negavoid
Offline
Зарегистрирован: 09.07.2016

Mural пишет:
Вот ваше предложение выглядит самым  разумным пока. А чем лучшеt SuperRawReader?

Тем, что я его только что выдумал :) Но если не принимать это в расчёт, то любой готовый класс лучше уже тем, что не придётся самому его писать.

ЕвгенийП пишет:

А чем по большому счёту raw отличается от BMP? Кроме того, что BMP любой просмотрщик показать может и никаких размеров заранее знать не надо?

У BMP есть заголовок, нужно отматывать смещение, у него выравниваются байты по границам, у него биты на пиксель надо смотреть в заголовке, он может быть сжат RLE или ещё чем-нибудь. Но так-то, конечно, одна фигня. :)

Mural
Offline
Зарегистрирован: 22.06.2018

negavoid]</p> <p>[quote=Mural пишет:
Вот ваше предложение выглядит самым  разумным пока. А чем лучшеt SuperRawReader?

Тем, что я его только что выдумал :) Но если не принимать это в расчёт, то любой готовый класс лучше уже тем, что не придётся самому его писать.

[quote=ЕвгенийП]

Тут, похоже, фокус в том, что никто этой задачей не заморачиваался и готовых классов просто нет. Конвертор jpega японец написал, но он блоковый. Параметры файла он получает общие, а потом теми же блоками гонит на экран.

Мне же надо просто rgb пикселя по его координатам, а размеры файла я знаю просто потому что готовлю его в фотошопе.

Единственный риск-скорость обмена  информацией с SD.

negavoid
Offline
Зарегистрирован: 09.07.2016

Нет, я точно Д'Артаньян. Я же привёл вам пример, да и другие тоже привели. Открываем bmp файл, вычитываем служебную информацию, далее (тут нужно будет дописать) по координатам и разрешению определяем смещение в файле, делаем fseek(), читаем сколько нужно байт, и выдираем из получившегося RGB или BGR то, что нужно. Скорость обмена с картой невысока, но fseek и пару read много времени не займут.

Mural
Offline
Зарегистрирован: 22.06.2018

Теперь яснее. Буду пробовать.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

wdrakula пишет:

Ребята! Мне интересно, что они (новички) так жмутся объяснить суть своих задумок?

Может очередной студент делает дипломную работу? Иного разумного объяснения для такого бредовейшего проекта трудно придумать. Хочешь отвязаться от компа -дойди до ближайшего эльдорадо, купи за три тыщи принтер, который печатает любые файлы с флешки. 

PS: Я считаю что не стоит помогать людям, которые не хотят объяснять суть задумок. 

b707
Offline
Зарегистрирован: 26.05.2017

dimax пишет:

Может очередной студент делает дипломную работу? Иного разумного объяснения для такого бредовейшего проекта трудно придумать. Хочешь отвязаться от компа -дойди до ближайшего эльдорадо, купи за три тыщи принтер, который печатает любые файлы с флешки.

ну почему обязательно студент? - вполне возможно, что человек изобретает гравировальный станок или печать по ткани, к примеру

dimax пишет:

PS: Я считаю что не стоит помогать людям, которые не хотят объяснять суть задумок. 

скорее не стоит помогать наглым халявщикам и тупицам. А что касается "сути задумок" - был бы умный, придумал бы логичное обьяснение :)

Mural
Offline
Зарегистрирован: 22.06.2018

Я уже приводил пример- к вам подходит прохожий с просьбой подсказать дорогу, поскольку у вас на майке написано "Помогаю". А вы в ответ -чувак, ты не в курсе, что существуют карты? Он вам - я в вашем городе впервые, а карты у меня устаревшие - А вы, ну ты дебил! Дожил до таких лет и не разу здесь не бывал! Езжай обратно в свой Урюпинск! Я ж тебе махнул рукой На север, а ты, блять, подробности тебуешь! тебя ЧТО,БЛЯТЬ ЗА РУЧКУ ДОВЕСТИ! За ручку не надо, хотя бы ориентиры. А ты, сук, ЗАЧЕМ в наш город приехал! Отчитайся, урод! ЗА КАКОЙ ТАКОЙ НАДОБНОСТЬЮ! Нам, помогающим, оченна интерено с кого перепугу ты сюда приперся, пока не скажешь, хиляй отсель, а то,ищь, выгоду, сукаа ищет, золотой унитаз в наших весях, да и помогаем мы только умным, а глупым - нет, не опускаемся.. а ты, чувак, тест не пршел. Это наше консолидированное мнение, чтоты дебил, раз ни разу здесь не был и помощи не достоин.

Гопник вы ардуинский, другими словами.

 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Mural пишет:

Гопник вы ардуинский, другими словами.

А ты чё такой, дерзкий?

sadman41
Offline
Зарегистрирован: 19.10.2016

На ком тут написано "Помогаю", признавайтесь.

Кстати, про разумные мысли. Каких-то несколько часов назад товарищ начал семёна макать в лужу, когда тот ему про raw-формат написал: "Не надо никакога ро, читаем файл, раскодируем его в соответсвии с форматом и читаем свойства нужного пикселя. В зависимости от типа файла пиксель может быть кодирован явно или вычислятся. Можно выбрать формат попроще." #7

А щас вона чо - уже и raw подходит.

negavoid
Offline
Зарегистрирован: 09.07.2016

О, аллегории. Общаться с людьми, которые способны мыслить аллегориями - это уже хорошо. Позвольте чуть подкорректировать: первый человек махнул рукой в нужную сторону, второй, третий, четвертый и пятый не просто махнули, но уточнили цель, поскольку знают оптимальные маршруты к ней по дворам, ещё один достал свою карту и показал путь до улицы, осталось только найти на ней дом, а вы их всех за это гопниками называете :) А ведь вы просто не знаете карту этого города и не хотите учить, да и точку назначения не хотите называть, как же помочь-то тут пройти?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

sadman41 пишет:

На ком тут написано "Помогаю", признавайтесь.

Садман41, этот "настенный" (типа "мурал") на совесть давить пытаиццо ;). У перод! Флаг в руки! И барабан.

На всякий случай: мне 49 лет и я, в безумные 90-е, был главбухом мелкого банка.... мне уже никогда и ни за что не станет стыдно ;)... Чс-слово! ;) ;) ;)

---------------

ЗЫ: пришла жена, спрашивает: "Кого мочишь?". Да вот, говорю, меня тут пристыдить пытаются.

"Я, бывает, и сама бы рада была, но это абсолютно бесперспективное занятие... ну как онанизм, только еще глупее".