草庐IT

png-transparency

全部标签

c++ - 使用 libpng 将位图缓冲区快速编码为 png

我的目标是使用C/C++将32位位图(BGRA)缓冲区实时转换为png图像。为了实现它,我使用了libpng库来转换位图缓冲区,然后写入一个png文件。然而,在单线程目标arm板(四核处理器)上执行似乎需要很长时间(~5秒)。在分析时,我发现libpng压缩过程(放气算法)占用了90%以上的时间。所以我试图通过以某种方式使用并行化来减少它。这里的最终目标是至少在0.5秒内完成。既然png可以有多个IDATblock,我想到了用多个IDAT并行编写png。采用以下方法编写具有多个IDAT的自定义png文件1.WritePNGIHDRchunk2.WriteIDATchunksinpara

c++ - 将透明的 .PNG 图像传输到屏幕上

您好,我有一个图像,上面画了一个黑色矩形,它的背景是透明的。此文件保存为png(clear.png)。然后我有另一张图片,它只是一个纯红色背景,保存为jpeg(background.jpeg)。我试图做的是使clear.png中的黑色矩形显示在纯红色背景图像的顶部。这就是我所做的../*Transparentimage*/#include"SDL/SDL.h"#include"SDL/SDL_image.h"#includeusingnamespacestd;intmain(intargc,char*argv[]){SDL_Surface*screen=NULL;SDL_Surface

c++ - libpng 在 png_read_info() 上崩溃

我正在尝试在vs2013中使用libpng1.2.10读取一个png文件。我下载了最新的zlib并编译了pnglib,效果很好。现在我正在尝试加载一个文件:int*w=&width;int*h=&height;constchar*name=file.c_str();FILE*png_file=fopen(name,"rb");if(!png_file){std::cerr不幸的是我得到了Unhandledexceptionat0x77D78E19(ntdll.dll)inSimpleShader.exe:0xC0000005:Accessviolationwritinglocation

C++ 和 Qt : Paint Program - Rendering Transparent Lines Without Alpha Joint Overlap

我已经开始创建一个与绘图板交互的绘图程序。根据笔在数位板上的压力,我更改了正在绘制的线条的alpha值。该机制有效。细线看起来不错,看起来像一个真实的素描。但是因为我在两点之间画线(就像在Qt涂鸦教程中一样)来绘画,所以线接头之间有一个alpha重叠,并且对于粗笔画来说非常明显。这是线对线连词的效果:如您所见,线段之间存在难看的alpha混合。为了解决这个问题,我决定使用QPainterPath来渲染线条。这有两个问题:长的、连续的、粗的路径很快就会滞后于程序。由于路径是相连的,所以它作为一个路径起作用,所以对alpha值的任何更改都会影响整个路径(我不想这样做,因为我想保留混合效果)

【论文简述】Learning Depth Estimation for Transparent and Mirror Surfaces(ICCV 2023)

一、论文简述1.第一作者:AlexCostanzino2.发表年份:20233.发表期刊:ICCV4.关键词:深度感知、立体匹配、深度学习、分割、透明物体、镜子5.探索动机:透明或镜面(ToM)制成的材料,从建筑物的玻璃窗到汽车和电器的反射表面。对于利用计算机视觉在未知环境中操作的自主代理来说,这可能是一个艰巨的挑战。在空间人工智能涉及的众多任务中,对于计算机视觉算法和深度网络来说,准确估计这些表面上的深度信息仍然是一个具有挑战性的问题。基于深度学习的深度传感技术,例如单目或立体网络,在提供足够的训练数据的情况下,有可能解决这一挑战。但具有透明对象的数据集很少提供真实深度注释,这些注释是通过非

c++ - 如何在 QT 框架的 UI 上显示一个 "*.png"文件?

我是QtFramework的新手...我想在我的Form1.ui中显示一张.png图片,所以我从小部件框中拖放了一个图形View我将test.png放在同一目录中(在项目文件夹内)我在代码中做到了这一点//Form1.cpp#include"form1.h"#include"ui_form1.h"Form1::Form1(QWidget*parent):QWidget(parent),ui(newUi::Form1){ui->setupUi(this);ui->Pic1->setStyleSheet("background-image:url(test.png)");}Form1::~

c++ - libpng 错误 : PNG unsigned integer out of range

当尝试从内存中读取PNG时,我遇到了这个奇怪的错误:libpngerror::PNGunsignedintegeroutofrange这个错误是由引起的png_read_info(png_ptr,info_ptr);它使用以下处理程序:staticvoidReadDataFromBuffer(png_structppng_ptr,png_bytepoutBytes,png_size_tbyteCountToRead){PNGDataPtrdataptr=(PNGDataPtr)png_get_io_ptr(png_ptr);png_uint_32i;coutlenpdataptr->l

c++ - libpng png_set_add_alpha | png_set_filler 错误 : sequential row overflow

我正在尝试使用C读取PNG文件以用于OpenCL。OpenCL不支持24位RGB图像,因此我需要将数据从RGB扩展到RGBA。我使用的PNG都是24位的,因此可以避免头痛。我曾尝试使用png_set_filler和png_set_add_alpha,我认为它们大致相同来解决问题,但它们都会导致此错误:libpngerror:sequentialrowoverflow这里是完整的函数:intLoadPNG24(unsignedchar**pixelBuffer,constchar*filename,unsignedint*width,unsignedint*height){png_byt

c++ - 在 C++ 中从 HBITMAP 转换为 Jpeg 或 Png

有谁知道如何使用HBITMAP变量来编写png或jpeg文件?我首先研究了使用GDI+执行此操作,但它给了我错误,告诉我尚未定义最小/最大值(定义它们只会带来更多问题),然后我查看了libpng的C++绑定(bind)(png++),但无法获得要编译的示例。谢谢,米奇 最佳答案 HBITMAPbmp;CImageimage;image.Attach(bmp);image.Save("filename.jpg");//changeextensiontosavetopng 关于c++-在C+

c++ - SDL + SDL_ttf : Transparent blended text?

我想在具有给定alphachannel的SDL_Surface上呈现抗锯齿字符串。我发现可以渲染:具有字符串呈现方法的Blended变体的抗锯齿字符串(即:TTR_RenderText_Blended)。但是我不能让它透明。使用Shaded方法的抗锯齿字符串。但是有一个坚实的背景。可以将背景和绘制的字符串设为透明,但纯色背景仍然存在。也不可能将透明背景色传递给它。一个非抗锯齿字符串,我可以使用Solid变体使其透明化。但它没有消除锯齿。谢谢 最佳答案 我知道我在这方面有点晚了:/根据关于SDL_SetAlpha的SDL文档:Note