0
Halide에서 load_image
함수를 호출하려고하면 "init_io 오류"오류가 발생합니다. 디버깅 오류가 load_png
기능에 있음을 보여줍니다. VS 2015 Express에서 libpng를 사용하여 할로겐 오류로드 PNG 이미지
bool load_png(const std::string &filename, ImageType *im) {
#ifdef HALIDE_NOPNG
return false;
#else // HALIDE_NOPNG
png_byte header[8];
png_structp png_ptr;
png_infop info_ptr;
/* open file and test for it being a png */
Internal::FileOpener f(filename.c_str(), "rb");
if (!check(f.f != nullptr, "File %s could not be opened for reading\n", filename.c_str())) return false;
if (!check(fread(header, 1, 8, f.f) == 8, "File ended before end of header\n")) return false;
if (!check(!png_sig_cmp(header, 0, 8), "File %s is not recognized as a PNG file\n", filename.c_str())) return false;
/* initialize stuff */
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
if (!check(png_ptr != nullptr, "png_create_read_struct failed\n")) return false;
info_ptr = png_create_info_struct(png_ptr);
if (!check(info_ptr != nullptr, "png_create_info_struct failed\n")) return false;
**if (!check(!setjmp(png_jmpbuf(png_ptr)), "Error during init_io\n")) return false;**
png_init_io(png_ptr, f.f);
png_set_sig_bytes(png_ptr, 8);
png_read_info(png_ptr, info_ptr);
이
는 호출 기능#include "stdafx.h"
#include "Halide.h"
#include "halide_image_io.h"
using namespace Halide::Tools;
#include <stdio.h>
int main(int argc, char **argv)
{
Halide::Image<uint8_t> input = load_image("../images/rgb.png");
save_image(input, "brighter.png");
printf("Success\n");
return 0;
}
환경을합니다.
- 비주얼 스튜디오 2015
- 의 libpng 1.2.35
- ZLIB 1.2.11
- 윈도우 7
나는이 솔루션을 시도했다, 그러나 그것은 도움이되지 않습니다. libpng: writing a png fails: stops at header write error
아이디어가 있으십니까?
이 코드가 새 코드입니까, 아니면이 코드를 이미 사용하고있는 기존 Halide 테스트/응용 프로그램에서 실패한 것입니까? (예 : tests/correctness/image_io.cpp) –
@StevenJohnson Windows 사용자 인 그는 2016/10/22의 최신 바이너리 버전을 소스에서 빌드하는 Linux 버전과 비교했을 것입니다. 너희들은 더 많은 방출을해야한다. –
여기 rgb.png 파일을 업로드 할 수 있습니까? –