C++:Magick++:调整大小会破坏 PixelPacket,并导致返回 nullptr

C++: Magick++: Resize breaks PixelPacket, and causes to return a nullptr

本文关键字:返回 nullptr PixelPacket 调整 Magick++ C++      更新时间:2023-10-16
#include <Magick++.h>
using namespace std;
using namespace Magick;
int main(int argc,char **argv) 
{
  InitializeMagick(*argv);
  Thumbnail.read(argv[1]);
  Thumbnail.resize(Geometry(50, 50));
  Pixels viewThumbnail(ResizedThumbnail);
  PixelPacket *ThumbnailPixels = viewThumbnail.get(0, 0, 50, 50);
}

信息:

#define MagickPackageName "ImageMagick"
#define MagickCopyright  "Copyright (C) 1999-2012 ImageMagick Studio LLC"
#define MagickSVNRevision  "8535"
#define MagickLibVersion  0x677
#define MagickLibVersionText  "6.7.7"
#define MagickLibVersionNumber  5,0,0
#define MagickLibAddendum  "-10"
#define MagickLibInterface  5
#define MagickLibMinInterface  5
#define MagickReleaseDate  "2013-09-10"
#define MagickChangeDate   "20120628"
#define MagickAuthoritativeURL  "http://www.imagemagick.org"
g++ --version
g++ (Ubuntu/Linaro 4.7.3-1ubuntu1) 4.7.3
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
uname -r && lsb_release  -rd
3.8.0-26-generic
Description:    Linux Mint 15 Olivia
Release:        15

当我调整缩略图大小时,无论我选择什么大小,它都会使 PixelPacket 返回 nullptr,并且使用 Image ResizedThumbnail = Thumbnail 并不能解决问题。裁剪不会导致问题,但缩放和调整大小会导致问题。另外,如果我Thumbnail.write("test.jpg");放在测试之前Pixels viewThumbnail(...).jpg是一个有效的jpeg图像

使用以下方法可解决此问题:

Geometry Size = Geometry(twidth, theight);
Size.aspect(true);
Thumbnail.resize(Size);