objective c - kCAFilterNearest maginifcation filter (UIImageView) -


i using qrencoder library found here: https://github.com/jverkoey/objqrencoder

basically, looked @ example code author, , when creates qrcode comes out no pixelation. image library provides 33 x 33 pixels, uses kcafilternearest magnify , make clear (no pixilation). here code:

    uiimage* image = [qrencoder encode:@"http://www.google.com/"];      uiimageview* imageview = [[uiimageview alloc] initwithimage:image];   cgfloat qrsize = self.view.bounds.size.width - kpadding * 2;     imageview.frame = cgrectmake(kpadding, (self.view.bounds.size.height - qrsize) / 2,     qrsize, qrsize);     [imageview layer].magnificationfilter = kcafilternearest;      [self.view addsubview:imageview]; 

i have uiimageview in xib, , setting it's image this:

[[template imagevqrcode] setimage:[qrencoder encode:ticketnum]]; [[[template imagevqrcode] layer] setmagnificationfilter:kcafilternearest]; 

but qrcode blurry. in example, comes out crystal clear. doing wrong? thanks!

update:i found out problem isn't scaling or kcaffilternearest. has generating png image view. here's how looks on deive vs how looks when save uiview png representation (notice qrcodes quality):

enter image description here

update 2: how generating png file uiview:

   uigraphicsbeginimagecontextwithoptions([[template view] bounds].size, yes, 0.0);     [[[template view] layer] renderincontext:uigraphicsgetcurrentcontext()];     uiimage *viewimage = uigraphicsgetimagefromcurrentimagecontext();     uigraphicsendimagecontext();     [uiimagepngrepresentation(viewimage) writetofile:plistpath atomically:yes]; 

i have used below function editing image.

- (uiimage *)resizedimage:(cgsize)newsize interpolationquality:(cginterpolationquality)quality {     bool drawtransposed;      switch (self.imageorientation) {         case uiimageorientationleft:         case uiimageorientationleftmirrored:         case uiimageorientationright:         case uiimageorientationrightmirrored:             drawtransposed = yes;             break;          default:             drawtransposed = no;     }      return [self resizedimage:newsize                     transform:[self transformfororientation:newsize]                drawtransposed:drawtransposed          interpolationquality:quality];  }  - (uiimage *)resizedimage:(cgsize)newsize                 transform:(cgaffinetransform)transform            drawtransposed:(bool)transpose      interpolationquality:(cginterpolationquality)quality {      cgrect newrect = cgrectintegral(cgrectmake(0, 0, newsize.width, newsize.height));     cgrect transposedrect = cgrectmake(0, 0, newrect.size.height, newrect.size.width);     cgimageref imageref = self.cgimage;      // build context that's same dimensions new size     cgbitmapinfo bitmapinfo = cgimagegetbitmapinfo(imageref);     if((bitmapinfo == kcgimagealphalast) || (bitmapinfo == kcgimagealphanone))         bitmapinfo = kcgimagealphanoneskiplast;      cgcontextref bitmap = cgbitmapcontextcreate(null,                                                 newrect.size.width,                                                 newrect.size.height,                                                 cgimagegetbitspercomponent(imageref),                                                 0,                                                 cgimagegetcolorspace(imageref),                                                 bitmapinfo);      // rotate and/or flip image if required orientation     cgcontextconcatctm(bitmap, transform);      // set quality level use when rescaling     cgcontextsetinterpolationquality(bitmap, quality);      // draw context; scales image     cgcontextdrawimage(bitmap, transpose ? transposedrect : newrect, imageref);      // resized image context , uiimage     cgimageref newimageref = cgbitmapcontextcreateimage(bitmap);     uiimage *newimage = [uiimage imagewithcgimage:newimageref];      // clean     cgcontextrelease(bitmap);     cgimagerelease(newimageref);      return newimage;  }   uiimagewritetosavedphotosalbum([image resizedimage:cgsizemake(300, 300) interpolationquality:kcginterpolationnone], nil, nil, nil); 

please find below image , let me know if need help.

enter image description here


Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -