Я пытаюсь прочитать изображения cr2, используя canon sdk (canon_edsdk-2.12).
Кажется, я правильно загружаю dll, но когда я пытаюсь получить реальное изображение, я получаю сообщение об ошибке.
Я попытался запустить пример программы, чтобы увидеть, чем она отличается от моей, но происходит то же самое.
Пытаясь найти проблему в Интернете, я нашел фактический исходный код примера: http://read.pudn.com/downloads107/sourcecode/graph/texture_mapping/440409/RAWDevelop/RAWDevelopDlg.cpp__.htm
Моя ошибка, по указанному источнику, заключается в void CRAWDevelopDlg::LoadImage()
функция —
err = EdsGetImage( m_ImageRef , source , kEdsTargetImageType_RGB , rect , size , DstStreamRef );
if( err == EDS_ERR_OK ) {...}
else
{
AfxMessageBox("The error occurred with the EdsGetImage function.");
}
Выше (в строке 481 на странице) тот же метод, который я использую, и я получаю ту же ошибку — с кодом ошибки 35 (вместо 0).
Кажется, ошибка
#define EDS_ERR_FILE_OPEN_ERROR 0x00000023L
Итак … может быть что-то не так с файлами? Я экспериментировал с файлами, снятыми разными версиями, в том числе новейшими камерами … Файлы открываются в Photoshop … И демоверсия показывает информацию заголовка, так как она выдает ошибку. Так что он может что-то увидеть.
Я что-то пропустил?
Все необходимые DLL используются в системном пути …
Спасибо.
Старый вопрос, тем не менее, может помочь кому-то:
Чтобы открыть необработанный файл с помощью SDK, вам нужно вызвать эти функции (конечно, вы должны проверить ошибки):
EdsStreamRef stream = NULL;
EdsImageRef imgRef = NULL;
EdsCreateFileStream("filename", kEdsFile_OpenExisting, kEdsAccess_Read, &stream);
EdsCreateImageRef(stream, &imgRef);
EdsRelease(stream);
Затем вы можете установить и получить свойства с помощью imgRef.
Чтобы сохранить изображение как изображение jpg / tiff / RGB, используйте функцию EdsSaveImage.
Других решений пока нет …