0

我正在使用 pHash 分析使用 cimg 的图像,即使我有 libpng12.dll、libpng.lib、libtiff3.dll 和 libtiff.lib 支持这些文件,我也无法加载和分析 tiff 图像或 png。当我将其中一个 pHash 函数传递给 tiff 图像时,它不会将其识别为 tif 并继续尝试使用 magick++ 加载它,我不想使用 magick++。

你能帮我弄清楚我哪里出错了吗?

调试完所有内容后..我意识到图像没有通过“if(tiff)”,所以没有做任何事情。

这是检查文件是否为 tiff 的代码:

TIFF *tif = TIFFOpen(filename,"r");
      if (tif) {
        unsigned int nb_images = 0;
        do ++nb_images; while (TIFFReadDirectory(tif));
        if (nfirst_frame>=nb_images || (nlast_frame!=~0U && nlast_frame>=nb_images))
          cimg::warn(_cimg_instance
                     "load_tiff() : File '%s' contains %u image(s) while specified frame range is [%u,%u] (step %u).",
                     cimg_instance,
                     filename,nb_images,nfirst_frame,nlast_frame,nstep_frame);

        if (nfirst_frame>=nb_images) return assign();
        if (nlast_frame>=nb_images) nlast_frame = nb_images-1;
        TIFFSetDirectory(tif,0);
        CImg<T> frame;
        for (unsigned int l = nfirst_frame; l<=nlast_frame; l+=nstep_frame) {
          frame._load_tiff(tif,l);
          if (l==nfirst_frame) assign(frame._width,frame._height,1+(nlast_frame-nfirst_frame)/nstep_frame,frame._spectrum);
          if (frame._width>_width || frame._height>_height || frame._spectrum>_spectrum)
            resize(cimg::max(frame._width,_width),cimg::max(frame._height,_height),-100,cimg::max(frame._spectrum,_spectrum),0);
          draw_image(0,0,(l-nfirst_frame)/nstep_frame,frame);
        }
        TIFFClose(tif);
4

0 回答 0