老师麻烦看一下 调试不出来 代码如下

老师麻烦看一下 调试不出来 代码如下

http://img1.sycdn.imooc.com//climg/5b34aa120001216e12040855.jpg

-(void)drawimage{

    //先将图片读取进来

    UIImage * image1 = [UIImage imageNamed:@"3.jpeg"];

    //创建图片的宽高  size_t是一种数据类型 类似于 int float

    size_t width = 150;

    size_t height = 200;

    //每一行元素有多少个字节 字节数=当前宽度x4

    //4是指每个像素由R+G+B+alpha四个元素构成

    //所以整个图片宽度x4表明每一行占有的字节数

    size_t byteperrow=width = width*4;

    //获取当前透明度  CGImageAlphaInfo透明度属性

    CGImageAlphaInfo alpha = kCGImageAlphaPremultipliedFirst;

    //配置图层的上下文参数

    //创建图层上下文 width,height当前图片的宽度和高度 8当前图片每一个像素点8bit=1Byte字节

    //byteperrow每行字节数 CGColorSpaceCreateDeviceRGB颜色空间

    //kCGBitmapByteOrderDefault当前字节的默认排序(RGB BGR之类的)

    //alpha context1图层的透明度  |或

    CGContextRef context1 = CGBitmapContextCreate(NULL, width, height, 8, byteperrow, CGColorSpaceCreateDeviceRGB(), kCGBitmapByteOrderDefault|alpha);

    //渲染上下文

    //context1上下文 CGRectMake绘制的区间范围 image1当前图片内容(读取进来的image)

    CGContextDrawImage(context1, CGRectMake(0, 0, width, height), image1.CGImage);

    //完成旋转动作

    //将当前绘制内容转化成 UInt8的形式  UInt8数据对象

    UInt8 *data = (UInt8*)CGBitmapContextGetData(context1);

    //创建参数  vImage_Buffer表明原来的数据空间

    vImage_Buffer src  ={data,height,width,byteperrow};

    vImage_Buffer dest  ={data,height,width,byteperrow};//目标

    //当前像素  创建颜色空间   表示没有颜色

    Pixel_8888 bgColor ={0,0,0,0};

    //旋转的方法  拿到旋转后的数据才能进行旋转操作

    //M_PI旋转角度  bgColor当前颜色  kvImageBackgroundColorFill填充当前背景颜色

    vImageRotate_ARGB8888(&src, &dest, NULL, M_PI, bgColor, kvImageBackgroundColorFill);

    //拿到当前图片

    //CGImageRef像素位图  创建像素位图

    CGImageRef imgref = CGBitmapContextCreateImage(context1);

    //将图片转化成UIimage形式 orientation图片方向 scale缩放属性 imageOrientation原始方向

    UIImage *imagenew = [UIImage imageWithCGImage:imgref scale:0.5 orientation:image1.imageOrientation];

    //渲染

    [imagenew drawAtPoint:CGPointMake(100, 100)];

}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
提问者 盛益华通 2018-06-29 10:13:19

老师麻烦回答一下谢谢

  • vImage_Buffer你自己已经加了备注啦,相当于一个缓冲区的作用。 size_t byteperrow=width = width*4;这句代码有问题应该是size_t byteperrow= width*4;修改一下即可。
    2018-06-29 18:11:50
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
iOS入门:基础语法与常用控件
  • 参与学习       1337    人
  • 提交作业       712    份
  • 解答问题       1878    个

很多人都在疑问没有基础该怎么学习iOS开发?不用担心,本路径采用游戏关卡式的教学模式,并且以经典OC与最新Swift双重结合的教学内容,帮助大家快速掌握两种iOS开发语言基础,去掉“零”标签。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师