2017-07-04 13 views
9

İki görüntünün yüklenebileceği, arka plan ve ön planın (ön planın saydam bir arka plana sahip olduğu) bir Flask arka uç bitiş noktası uygulamaya çalışıyorum ve ön planın üstüne yapıştırılacak arkaplan.Alamofire Beyaz Arka Plan ile Flask'a PNG yükler

Alamofire.upload(multipartFormData: { formData in 
     formData.append(bgData, withName: "background", fileName: "background.jpg", mimeType: "image/jpeg") 
     formData.append(fgData, withName: "foreground", fileName: "foreground.png", mimeType: "image/png") 
    }, to: "http://localhost:8080/image_overlay?background=background%2Ejpg&overlay=overlay%2Epng&output=result%2Epng", encodingCompletion: { result in 
     switch result { 
     case .success(let upload, _, _): 
      upload.validate().responseJSON(completionHandler: { response in 
       switch response.result { 
       case .success(let value): print("success: \(value)") 
       case .failure((let error)): print("response error \(error)") 
       } 
      }) 
     case .failure(let error): 
      print("encoding error \(error)") 
     } 
    }) 

ön plan görünür: Ben Alamofire üzerinden aynı görüntü ve aşağıdaki kodu yüklemeye çalışırken, Ancak

background_name = request.args.get("background") 
overlay_name = request.args.get("overlay") 
output_name = request.args.get("output") 

background_data = request.files["background"].read() 
overlay_data = request.files["overlay"].read() 

background = Image.open(BytesIO(background_data)) 
overlay = Image.open(BytesIO(overlay_data)) 

background = background.convert("RGBA") 
overlay = overlay.convert("RGBA") 

overlay = resize_image(overlay, background.size) 
background.paste(overlay, (0, 0, background.size[0], background.size[1],), overlay) 
background.save(output_name, "PNG") 

: Ben yerel dosyaları ile test edilmiş ve çalışır olması aşağıdaki Python kodu var Saydam bir arka plan yerine beyaz bir arka plan ile ve sonuçtaki görüntü beyaz bir arka plan ile sadece ön plan. Alamofire'ın şeffaflığı nasıl gönderebilirim?

DÜZENLEME: Bunu bir cURL isteğine çevirmeyi denedim ve beklendiği gibi çalışıyor. Tam isteği görüntülemek için nc-l localhost 8080'i kullandım ve Content-Type'ın "application/octet-stream" olarak ayarlanmış olmasına rağmen, önalan resmiyle bir sonraki satırın "? PNG" olduğu görülüyor. Bu hat Alamofire talebinden hiç bir şey değildi. Resmi PNG olarak tanıma isteğini nasıl alabilirim?

cevap

4

Bunu yaptığıma inanamıyorum ama resim verilerine elde edildiğinde, ben bu bile şimdiye kadar Swift bir görüntüden veri elde etmişti tek yoluydu

let fgData = UIImageJPEGRepresentation(UIImage(named: "overlay.png"), 0.75) 

kullanıyordum Açıkçası, değiştirdiğim şey şu olmalıydı:

let fgData = UIImagePNGRepresentation(UIImage(named: "overlay.png")) 
+0

Evet, png'yi jpg'ye dönüştürmek buna sebep olur. –

+0

Kim düşünebilirdi! – genghiskhan

İlgili konular