objective-c – 从UIImageCGImage转换为Leptonica Pix结构

objective-c – 从UIImageCGImage转换为Leptonica Pix结构,第1张

概述我想在我的iOS应用程序中使用Leptonica库进行图像处理,并且弄清楚如何从UI Image获取Leptonica的Pix结构.我建议做的事情如下: UIImage *image = [UIImage imageNamed:@"test.png"];...CFDataRef imageData = CGDataProviderCopyData(CGImageGetDataProvider( 我想在我的iOS应用程序中使用Leptonica库进行图像处理,并且弄清楚如何从UI Image获取Leptonica的Pix结构.我建议做的事情如下:

UIImage *image = [UIImage imagenamed:@"test.png"];...CFDataRef imageData = CGDataProvIDercopyData(CGImageGetDataProvIDer([image CGImage]));const UInt8 *rasterData = CFDataGetBytePtr(data);

任何人都可以建议如何正确地将此数据转换为Leptonica的Pix结构:

/*-------------------------------------------------------------------------* *                              Basic Pix                                  * *-------------------------------------------------------------------------*/struct Pix{    l_uint32             w;           /* wIDth in pixels                   */    l_uint32             h;           /* height in pixels                  */    l_uint32             d;           /* depth in bits                     */    l_uint32             wpl;         /* 32-bit words/line                 */    l_uint32             refcount;    /* reference count (1 if no clones)  */    l_int32              xres;        /* image res (ppi) in x direction    */                                      /* (use 0 if unkNown)                */    l_int32              yres;        /* image res (ppi) in y direction    */                                      /* (use 0 if unkNown)                */    l_int32              informat;    /* input file format,IFF_*          */    char                *text;        /* text string associated with pix   */    struct Pixcolormap  *colormap;    /* colormap (may be null)            */    l_uint32            *data;        /* the image data                    */};

UPD:

我这样做:

UIImage *image = [UIImage imagenamed:@"test.png"];CFDataRef data = CGDataProvIDercopyData(CGImageGetDataProvIDer([image CGImage]));const UInt8 *imageData = CFDataGetBytePtr(data);Pix *myPix = (Pix *) malloc(sizeof(Pix));CGImageRef myCGImage = [image CGImage];myPix->w = CGImageGetWIDth (myCGImage);myPix->h = CGImageGetHeight (myCGImage);myPix->d = CGImageGetBitsPerComponent(myCGImage);myPix->wpl = CGImageGetBytesPerRow (myCGImage) / 4;myPix->data = (l_uint32 *) imageData;myPix->colormap = NulL;NSLog(@"pixWrite=%d",pixWrite("/tmp/lept-res.bmp",myPix,IFF_BMP));

但我得到的与原始图片完全不同:

http://dl.dropbox.com/u/4409984/so/lept-orig.png

http://dl.dropbox.com/u/4409984/so/lept-res.png

我究竟做错了什么?

解决方法 一旦有了CGImage,就可以直接从CGImage中获取大部分信息.

CGImageRef myCGImage = [image CGImage];struct Pix myPix;myPix.w = CGImageGetWIDth (myCGImage);myPix.h = CGImageGetHeight (myCGImage);myPix.d = CGImageGetBitsPerComponent (myCGImage);myPix.wpl = CGImageGetBytesPerRow (myCGImage) / 4;... etc. ...
总结

以上是内存溢出为你收集整理的objective-c – 从UIImage / CGImage转换为Leptonica Pix结构全部内容,希望文章能够帮你解决objective-c – 从UIImage / CGImage转换为Leptonica Pix结构所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1225839.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存