• Как преобразовать cli::array ^ в byte *??

    Используйте pin_ptr

    array<Byte>^ bytes = File::ReadAllBytes( fileName );
    pin_ptr<unsigned char> pptr = &bytes[0];
    const int BUFFER_SIZE = 65536;
    unsigned char buf [ BUFFER_SIZE ];
    memcpy_s( buf, sizeof(buf), pptr, bytes->Length );
    Ответ написан
  • Как организовать построение пирамид изображений?

    Попробуйте воспользоваться библиотекой GDAL - в ней есть средства для работы с большими изображениями.

    Например, для организации просмотра больших изображений можно через GDAL запрашивать тайлы нужного масштаба (LOD-а) изображения и отображать их (GDAL самостоятельно будет масштабировать изображение и строить тайлы). Для повышения производительности этого процесса есть возможность построения overviews (версий изображения меньших масштабов) с помощью GDAL – рядом с файлом GDAL помещает файл с пирамидой и потом сам использует его, когда у него запрашивают данные в меньшем разрешении.

    Кроме того, можно сохранять overviews в отдельные файлы, потом резать их на тайлы (тоже GDAL-ом), получится требуемая пирамида масштабов.

    У GDAL-а есть с++ и cи api. Еще c# и питон, cmd, ну и что там до кучи.

    Минусы: мало примеров использования в интернете, придется повозиться с документацией и поэкспериментировать.
    Ответ написан