首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >glReadPixels与图像保存

glReadPixels与图像保存
EN

Stack Overflow用户
提问于 2012-10-09 15:30:18
回答 2查看 883关注 0票数 0

我有一个应用程序,用户可以拖放图像,并且正在用OpenGL重新绘制图像,以便进行一些可飞行的处理。一切都正常。当用户想保存他的图像时,它的工作方式是这样的:

代码语言:javascript
复制
glReadPixels -> NSBitmapImageRep -> NSData -> Write to file

这个也能用。差不多了。对于一些图像,它不工作,因为它应该工作。

例如:

.png

当我打开并保存这个图像时:

我得到:

如果我打开并保存这个图像:

我得到:

.jpg

如果我打开并保存:

我得到:

当我打开并保存:

我得到:

所以有时候图像保存得很差。为什么会这样?

这就是分配我的NSBitmapImageRep的方式:

代码语言:javascript
复制
NSBitmapImageRep *imageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:_image_width pixelsHigh:_image_height bitsPerSample:8 samplesPerPixel:3 hasAlpha:NO isPlanar:NO colorSpaceName:NSDeviceRGBColorSpace bytesPerRow:3 * _image_width bitsPerPixel:0];

GL_PACK_ALIGNMENT是不编辑的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-09 15:35:55

在播放像素数据之前,您必须告诉OpenGL如何“格式化”它。这意味着设置GL_PACK_的所有→glPixelStore参数。对您来说最重要的是对齐参数。还请记住,要用每个像素正确的组件数编写文件,还要从OpenGL中读取正确的组件。

票数 2
EN

Stack Overflow用户

发布于 2013-03-23 17:12:24

我也有过同样的

你只需要设置正确的bytesPerRow

代码语言:javascript
复制
bytesPerRow:(width*3+3)&~3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12803479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档