对图片的相关操作

作者: HenryPeng | 来源:发表于2016-01-13 15:19 被阅读34次

欢迎加入我个人维护QQ群:379069176
PS:定期分享干货

将多张图片同时保存到相册中,出现的错误

将多张图片保存到相册中的时候,可能会出现系统忙碌或者一些莫名其妙的错误,使得程序在运行的时候,有的图片保存成功,有的图片则保存失败。原因有很多,最常见的原因应该是在同时保存图片的时候执行的是异步,所以导致系统出错,一般解决方案会使用逐一保存的方式,如果出错重新保存,虽然可以解决一部分的问题,但是仔细推敲一下,如果不是因为异步问题引发的错误怎么办??系统会陷入无限循环中去。
解决方法:用Photos FrameWork来解决。
代码:

func saveImageInAlbum() -> NSError? {
  var err: NSError?
  PHPhotoLibrary.sharedPhotoLibrary().performChanges({
   let _ = PHAssetChangeRequest.creationRequestForAssetFromImage(self.image)
   }, completionHandler: { (success, error) -> Void in
    if let error = error {
     err = error
     LOG(error.description)
    }
    self.complete = true
  })
  while !complete {
   NSRunLoop.currentRunLoop().runMode(NSDefaultRunLoopMode, beforeDate: NSDate(timeIntervalSinceNow:0.01))
  }
  return err
 }

通过上面的代码,在保存图片的地方进行调用即可,这个方法返回一个错误信息,可以根据错误信息进一步做处理。

根据ImageData判断Image的类型

获得imageData的2进制数据之后,来进行对图片格式的判断

/// image类型判断
 func imageType(imgData : NSData) -> ImageType {
  var c = [UInt32](count: 1, repeatedValue: 0)
  let res : ImageType
  imgData.getBytes(&c, length: 1)
  
  switch (c[0]) {
  case 0xFF:
   res = .Jpeg
  case 0x89:
   res = .Png
  case 0x47:
   res = .Gif
  case 0x49, 0x4D :
   res = .Tiff
  default:
   res = .Unknown
  }
  return res
 }
/// 类型
 enum ImageType {
  case Jpeg
  case Png
  case Gif
  case Tiff
  case Unknown
  
  var ext: String {
   switch self {
   case .Jpeg:
    return "jpg"
   case .Png:
    return "png"
   case .Gif:
    return "gif"
   case .Tiff:
    return "tiff"
   case .Unknown:
    return ""
   }
  }
 }

image的缩放

这里做个备忘:

/// ImageView
func resizeImage(image: UIImage, targetSize: CGSize) -> UIImage {
 if image.size == targetSize {
  return image
 }
 let rect = CGRect(x: 0, y: 0, width: targetSize.width, height: targetSize.height)
 UIGraphicsBeginImageContext(rect.size)
 image.drawInRect(rect)
 let resultImage = UIGraphicsGetImageFromCurrentImageContext()
 UIGraphicsEndImageContext()
 
 return resultImage
}

好了,关于图片相关的一些Tips今后会时时更新。

相关文章

  • 对图片的相关操作

    欢迎加入我个人维护QQ群:379069176PS:定期分享干货 将多张图片同时保存到相册中,出现的错误 将多张图片...

  • Java 相关图片操作

    BufferedImage 转换为 InputStream 修改图片宽高

  • 对图片的相关处理

    1、图片等比例压缩 2、把图片等比例压缩到指定宽度 3、截取当前页面生成图片(屏幕外的也包括在内)

  • Native API 之 ImageLoader

    在Android端,React Native采用了Fresco图片库来进行图片相关的操作,因此RN所有的图片管理策...

  • iOS图片置灰

    通过对图片属性的操作,得到灰色图片赋值

  • 图片和文件操作相关api

    2019年12月25日一.图片处理API1.wx.chooseImage(object)选择图片 2.wx.pre...

  • github对tag相关操作

    创建tag 删除tag 查 推送到github

  • numpy、cv2等操作图片基本操作

    相关包 matplotlib PIL cv2 numpy 各种操作 读取图片 1 matplotlib.pylab...

  • 九、多媒体

    一、加载图片到内存 二、显示大图片 三、对图片的操作 缩放 (图像的操作步骤) 得到原图 创建拷贝 创建画板 创建...

  • opencv对图片的基本操作

    图片是一个numpy的ndarray数组,并且是三维的,对图片的操作就是对数组的操作图片的基本构成: imread...

网友评论

    本文标题:对图片的相关操作

    本文链接:https://www.haomeiwen.com/subject/ntmckttx.html