iOS 上有什么办法图片转数据? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
CSGO
V2EX    iDev

iOS 上有什么办法图片转数据?

  •  
  •   CSGO
    wyfang 2024-01-11 13:27:20 +08:00 1742 次点击
    这是一个创建于 640 天前的主题,其中的信息可能已经有所发展或是发生改变。
    帮 iOS 开发问的。
    我之前用 AI 按照自己要求,写了一个 html 页面,可以实现我任意上传一个图片,比如 2 * 2 像素的 png 图片,一共四个像素,然后转换成类似 0x00 这样的数据组,是个 16 阶颜色的数据: https://www.wangyifang.com/web/img2hex/index.html

    iOS 这边问了 AI 用到类似这样的:
    -------
    在 iOS 中,你可以使用 UIImage 来获取图片的数据。这里是一种常用的方法:
    首先,你需要使用 UIImage 来获取你的图片,然后使用 UIImageJPEGRepresentation 或 UIImagePNGRepresentation 来将图片转化为 NSData 。
    例如:

    swift
    if let image = UIImage(named: "your_image") {
    let imageData = UIImagePNGRepresentation(image)
    }

    UIImageJPEGRepresentation 和 UIImagePNGRepresentation 的区别主要在于它们压缩图像数据的方式不同。JPEG 通常用于照片,而 PNG 通常用于带有透明度的图像。
    如果你需要进一步处理图像数据,例如获取照片的具体像素信息,你可以将 NSData 转换为 CGImage ,然后通过 CGImage 来分析图像的每一个像素。
    需要注意的是,所有的这些操作都能消耗大量的内存和 CPU ,如果你处理的图像非常大,那么可能需要考虑使用更加高级的图像处理库,例如 Core Image 或者 GPUImage 。
    希望以上信息能帮助到你!
    -------

    但问题出现在这个东西 iOS 说用的是系统的,这导致现在比如在 iOS17.2.1 上会出现获取到图片数据是错误的。表现在如果有个 50*50 像素的带透明的 png ,中间有个正方形,那么获取到数据理论应该前后都有大量 0000 ,因为 RGBA 都是 0 ,结果获取到的数据前面会有其他数值,这导致再输出图像前面或者说说大量原本完全透明的地方出现大量比较随机的颜色。

    现在想问的是,有没办法自己用什么办法能获取图片的像素信息?或者说 iOS 有没办法类似 html 那样能直接把图片转成 0x00 的?
  • iOS
  • 图像
    < href="/tag/图片" class="tag">
  • 图片
  • 获取
    2 条回复
    rshinich
        1
    rshinich  
       2024-01-11 15:01:19 +08:00
    试试直接用 CGImage 呢?然后用这个: https://developer.apple.com/documentation/coregraphics/cgdataprovider
    653513754
        2
    653513754  
       2024-01-11 16:47:40 +08:00
    ```
    UIImage *origImg = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%s",imgPath]]; //加载图片

    CGSize size = [origImg size];

    int width = size.width;
    int height = size.height;

    uint32_t *pixels = (uint32_t *) malloc(width * height * sizeof(uint32_t));

    memset(pixels, 0, width * height * sizeof(uint32_t));

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    CGContextRef cOntext= CGBitmapContextCreate(pixels, width, height, 8, width * sizeof(uint32_t), colorSpace,
    kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedLast);

    CGContextDrawImage(context, CGRectMake(0, 0, width, height), [origImg CGImage]);

    int tt = 1;
    CGFloat intensity;
    int bw;


    for (int y = 0; y < height; y++)
    {
    for (int x = 0; x < width; x++)
    {
    uint8_t *rgbaPixel = (uint8_t *) &pixels[y * width + x]; // rgbaPixel[tt] + rgbaPixel[tt + 1] + rgbaPixel[tt + 2] 像素点

    }
    }


    CGImageRef image = CGBitmapContextCreateImage(context);

    CGContextRelease(context);

    CGColorSpaceRelease(colorSpace);

    free(pixels);
    ```
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2392 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 15:38 PVG 23:38 LAX 08:38 JFK 11:38
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86