使用libpng调整(双三次)图像列表

时间:2012-03-07 07:20:09

标签: c++ qt libpng

有人可以指点我的教程解释如何使用libpng& png ++用于在图像上应用双重调整大小?我花了差不多三个小时找东西,找不到。也许是因为我不知道在哪里看。

使用libpng读取图像(48 bit image),然后将其读入QImage以进行输出。如果我在图像上使用QImage::scaled,则像素信息会丢失,图像对我所需的图像无效。

我使用png :: rgba_pixel_16像素读取和操作图像 - 读取如下:

png::image< png::rgba_pixel_16 > myImage(myFile.toAscii());

引用另一个答案:

  

QImage中每个组件格式没有16位。你能得到的最多是QImage :: Format_ARGB32,每个组件8位。即使您使用8位索引模式,颜色表也不支持每个组件超过8位。此外,QImageIOHandler类在QImage方面工作,因此不能创建自定义图像格式插件,以便每个颜色组件使用16位。

最后一句话解释了为什么我不能使用QImage。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

你不需要使用Qt的libpng。

只需使用

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

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

答案 2 :(得分:0)

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