有人可以指点我的教程解释如何使用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。
答案 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,在读取图像后,它将独立于格式...