解析数组图像保存和获取

Posted

技术标签:

【中文标题】解析数组图像保存和获取【英文标题】:Parse array images saving and fetching 【发布时间】:2017-03-03 20:31:13 【问题描述】:

我有一个马赛克应用程序,它可以拍摄多张尺寸的照片并将它们分成更小的照片。根据照片的大小,较小照片的数量可能会有所不同。现在我有一个名为imageNameList2NSMutableArray,它包含从较大图像中拍摄的所有较小图像。对于这个例子,我展示了一个从图像资产列表中调用图像的示例,以便更容易回答这个问题。

这是imageNameListNSMutableArray 包含所有较小的图像)

var imageNameList: [String] 
    var imageNameList2:[String] = [] //[NSMutableArray]()
    for i in 0...149 
        let imageName = String(format: "pic_%03d", Int(i))
        imageNameList2.append(imageName)
    
    return imageNameList2

我想要做的是有一个继续按钮,它将所有这些图像保存为 piffles 或任何其他格式以解析效果最好,并有另一个称为检索的按钮将从解析中检索所有这些照片。我基本上有一个解析服务器,它利用解析框架来帮助加快后端进程。如果每次存储的图像数量不同,您能否告诉我如何保存和检索此NSMutableArray

【问题讨论】:

到目前为止您尝试过什么?你能展示你的代码吗? 我什至不知道从哪里开始我知道如何保存常规图像而不是 nsmutablearray 图像 我正在尝试保存 imageNameList 以什么语言将它们保存为什么和在哪里?既然已经有这么多主题在问如何将图像保存为 JPEG 或 PNG 文件,为什么我们还需要另一个相同性质的主题呢? 我正在使用解析框架将它们保存为 piffles 【参考方案1】:

我认为您正在尝试做这样的事情。这只是一个例子。有很多工作要做,但希望这会让你开始。我没有运行或测试此代码。

我们的想法是将您的图像保存为PFFiles,并为每个文件创建一个“平铺”PFObject。然后将所有 'tile' PFObjects 保存到图像 PFObject 的 'tiles' 键中。然后在需要时通过objectId 调用图像。

祝你好运。

let appleTiles = ["apple1, apple2, apple3"]
let orangeTiles = ["orange1, orange2, orange3, orange4, orange5"]

func usage() 

    //dont literally run these synchronously like this
    post(appleTiles)
    post(orangeTiles)
    download()


func post(_ tileNames: [String]) 

    let image = PFObject(className: "Image")

    let tilesPF = tileNames.map( name in
        let data = UIImagePNGRepresentation(UIImage(named: name))!
        let file = PFFile(data: data)

        let tile = PFObject(className: "Tile")
        tile["tile"] = file
    )

    image["tiles"] = tilesPF

    image?.saveInBackground(block:  responseObject, error in

        //you'll want to save the object ID of the PFObject if you want to retrieve a specific image later
    )


func download() 

    let query = PFQuery(className: "image")

    //add this if you have a specific image you want to get
    query.whereKey("objectId", equalTo: "someObjectId")

    query.findObjectsInBackground( result, error in

        //this is probably close to how you'd unwrap everything but again, I didn't test it so...
        if let objects = result as? [PFObject], let first = objects.first, let image = first["image"] as? PFObject, let tiles = image["tiles"] as? [PFObject] 

            tiles.forEach( tile in

                let file = tile["tile"]

                //now you have an individual PFFile for a tile, do something with it
            )
        
    )

【讨论】:

我试过了,但我遇到了线程断点崩溃。 at let data = UIImagePNGRepresentation(tile as!UIImage)! UIImagePNGRepresentation(tile) 出现错误! “无法将 pffobject 类型转换为 uiimage 类型” 好吧,我只是输入了这段代码作为示例,没有对其进行测试,因此您需要知道如何使用它并了解错误消息告诉您什么。我忘了添加一条线来将图像名称“平铺”转换为实际图像。我现在将添加该行。 好吧,弗兰基,我有三个选择,我想知道是否可以得到您的意见,哪一个最快。一种是在代码旁边使用 for 循环来保存图像。接下来就是将每张图片转成base64字符串,然后再转成图片。 什么更快,保存 150 个 jpeg 以 0.75 分辨率解析或将 150 个图像转换为 base64 字符串并保存要解析的字符串,然后检索字符串并将该字符串转换回图像

以上是关于解析数组图像保存和获取的主要内容,如果未能解决你的问题,请参考以下文章

解析 HTML 源代码以获取没有错误的图像的 url。 (首选 Python)[关闭]

android中的JSON解析和获取图像

使用 Node.js(和 NPM 包“psd”)解析 Adob​​e PSD 文件,以编程方式替换图像层,然后保存/渲染为 PNG

IOS JSON解析包含多个数组

将多个图像保存到 Parse

javascript 获取Promise *和*拒绝/解析函数指针。保存一些包装。