Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用libpng调整图像列表的大小(双三次)_C++_Qt_Libpng - Fatal编程技术网

C++ 使用libpng调整图像列表的大小(双三次)

C++ 使用libpng调整图像列表的大小(双三次),c++,qt,libpng,C++,Qt,Libpng,有人能告诉我一个教程,其中解释了如何使用libpng和png++在图像上应用双三次缩放吗?我花了将近三个小时找东西,却找不到。也许是因为我不知道去哪里找 图像()用libpng读取,然后读入QImage进行输出。如果我在图像上使用QImage::scaled,像素信息将丢失,并且图像对我所需的内容没有用处 我用png::rgba_pixel_16 pixel读取和操作一幅图像,如下所示: png::imagemyImage(myFile.toAscii()) 引用另一个答案: QImage中没有

有人能告诉我一个教程,其中解释了如何使用libpng和png++在图像上应用双三次缩放吗?我花了将近三个小时找东西,却找不到。也许是因为我不知道去哪里找

图像()用
libpng
读取,然后读入
QImage
进行输出。如果我在图像上使用
QImage::scaled
,像素信息将丢失,并且图像对我所需的内容没有用处


我用png::rgba_pixel_16 pixel读取和操作一幅图像,如下所示:

png::imagemyImage(myFile.toAscii())

引用另一个答案:

QImage中没有16位的每个组件格式。您最多可以获得每个组件8位的QImage::Format_ARGB32。即使使用8位索引模式,颜色表也不支持每个组件超过8位。此外,QImageIOHandler类根据QImage工作,因此很遗憾,您无法创建一个自定义图像格式插件来处理每个颜色组件16位


最后一句话解释了为什么我不能使用QImage进行此操作。

为什么需要libpng?您只需读取数组中的图像,然后对其执行大小调整,您不需要libpng,读取图像后,它将独立于格式…

如果您只想以编程方式调整图像大小,请查看。

您不需要使用Qt的libpng

只用

QImage QImage::scaled ( const QSize & size, Qt::AspectRatioMode aspectRatioMode, Qt::TransformationMode transformMode ) const

使用
transformMode=Qt::SmoothTransformation
进行双线性缩放。

我知道,我已经尝试过了,但由于某种原因,它没有给我预期的结果。我认为它必须有点深度。到底是什么问题?可能有兴趣就此提出一个问题……使用libpng读取图像(48位图像),然后将其读入
QImage
进行输出。如果我在图像上使用
QImage::scaled
,像素信息会丢失,图像对我需要的东西没有用处。问题是双三次缩放,而不是双线性缩放。我希望找到一个用Qt实现这一点的答案,但我开始认为除了使用第三方api(如OpenCV)执行缩放,然后转换为QImage之外,没有其他答案了。我用png::rgba_pixel_16 pixel读取和操作一幅图像,如下所示:png::imagemyImage(myFile.toAscii());这给了我所需要的质量(我想是64位,但我不确定,问题是结果还可以,但太大了。)谢谢,但需要使用QT。QT不支持48bpp图像。快速浏览文档后,AFAICT无法进行缩放。您“需要为此使用Qt”是什么意思?使用Qt调用imagemagick:-)