質問するログイン新規登録

質問編集履歴

5

追記

2021/06/01 12:25

投稿

ryo-dev
ryo-dev

スコア437

title CHANGED
File without changes
body CHANGED
@@ -83,4 +83,18 @@
83
83
  なんですが、別問題が発生しました。
84
84
  読み込んだ画像をpngへ変換する処理(`let pngImageData = image!.pngData()`)を加えると、メモリのエラーで落ちます。←おそらくメモリ不足
85
85
  で、スリープを挟もうとおもいスリープを挟むとHTTP通信でエラーになります。
86
- これをうまく回避する方法はありませんか?
86
+ これをうまく回避する方法はありませんか?
87
+ ### エラー
88
+ メモリのエラー
89
+ ![イメージ説明](88f2049a7c6e08512f76f7bf8b380ad9.png)
90
+
91
+ スリープを挟むと通信できない...
92
+ ```log
93
+ 2021-06-01 21:23:05.839333+0900 U22[6841:1264487] [connection] nw_endpoint_handler_set_adaptive_read_handler [C2 192.168.100.16:8200 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, ipv6, dns)] unregister notification for read_timeout failed
94
+ 2021-06-01 21:23:05.839464+0900 U22[6841:1264487] [connection] nw_endpoint_handler_set_adaptive_write_handler [C2 192.168.100.16:8200 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, ipv6, dns)] unregister notification for write_timeout failed
95
+ 2021-06-01 21:23:10.479982+0900 U22[6841:1264484] [connection] nw_endpoint_handler_set_adaptive_read_handler [C3 192.168.100.16:8200 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, ipv6, dns)] unregister notification for read_timeout failed
96
+ 2021-06-01 21:23:10.480112+0900 U22[6841:1264484] [connection] nw_endpoint_handler_set_adaptive_write_handler [C3 192.168.100.16:8200 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, ipv6, dns)] unregister notification for write_timeout failed
97
+ 2021-06-01 21:23:10.848275+0900 U22[6841:1264486] [connection] nw_endpoint_handler_set_adaptive_read_handler [C4 192.168.100.16:8200 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, ipv6, dns)] unregister notification for read_timeout failed
98
+ 2021-06-01 21:23:10.848521+0900 U22[6841:1264486] [connection] nw_endpoint_handler_set_adaptive_write_handler [C4 192.168.100.16:8200 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, ipv6, dns)] unregister notification for write_timeout failed
99
+ 2021-06-01 21:23:12.232012+0900 U22[6841:1264486] XPC connection interrupted
100
+ ```

4

修正

2021/06/01 12:25

投稿

ryo-dev
ryo-dev

スコア437

title CHANGED
File without changes
body CHANGED
@@ -80,4 +80,7 @@
80
80
  ~~最初は一度pngファイルに保存してから送信しようとしてたのですが、ファイルに保存しなくてもpng形式に変換すれば送れそうだったので、`pngImageData`に入ったpngデータを送信しようとしてます。その関係でコメントアウトが多くなってます。~~
81
81
 
82
82
  アドバイスを頂き、画像データをPNG形式へ変換し、そのデータをBase64でエンコードしたデータをPHPへ送信し、PHP側でPNGファイルへデコードする事にしました。
83
- なんですが、別問題が発生しました。
83
+ なんですが、別問題が発生しました。
84
+ 読み込んだ画像をpngへ変換する処理(`let pngImageData = image!.pngData()`)を加えると、メモリのエラーで落ちます。←おそらくメモリ不足
85
+ で、スリープを挟もうとおもいスリープを挟むとHTTP通信でエラーになります。
86
+ これをうまく回避する方法はありませんか?

3

追記

2021/06/01 12:20

投稿

ryo-dev
ryo-dev

スコア437

title CHANGED
File without changes
body CHANGED
@@ -77,4 +77,7 @@
77
77
  })
78
78
  }
79
79
  ```
80
- 最初は一度pngファイルに保存してから送信しようとしてたのですが、ファイルに保存しなくてもpng形式に変換すれば送れそうだったので、`pngImageData`に入ったpngデータを送信しようとしてます。その関係でコメントアウトが多くなってます。
80
+ ~~最初は一度pngファイルに保存してから送信しようとしてたのですが、ファイルに保存しなくてもpng形式に変換すれば送れそうだったので、`pngImageData`に入ったpngデータを送信しようとしてます。その関係でコメントアウトが多くなってます。~~
81
+
82
+ アドバイスを頂き、画像データをPNG形式へ変換し、そのデータをBase64でエンコードしたデータをPHPへ送信し、PHP側でPNGファイルへデコードする事にしました。
83
+ なんですが、別問題が発生しました。

2

修正

2021/06/01 12:15

投稿

ryo-dev
ryo-dev

スコア437

title CHANGED
File without changes
body CHANGED
@@ -21,11 +21,14 @@
21
21
  let assets:PHFetchResult = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: nil)
22
22
  //取得したアセットを変換
23
23
  assets.enumerateObjects({(obj, index, stop) -> Void in
24
- manager.requestImage(for: obj, targetSize: CGSize(width: obj.pixelWidth, height: obj.pixelHeight), contentMode: .aspectFill, options: nil) { [self] (image, info) -> Void in
24
+ manager.requestImage(for: obj, targetSize: CGSize(width: obj.pixelWidth, height: obj.pixelHeight), contentMode: .aspectFill, options: nil) {(image, info) -> Void in
25
25
  if(!arr.contains(String(obj.hashValue))){
26
26
 
27
27
  // pngで保存する場合
28
- let pngImageData = image!.pngData()
28
+ // let pngImageData = image!.pngData()
29
+
30
+
31
+ // self.backImageView.image = image! as UIImage
29
32
  // jpgで保存する場合
30
33
  // let jpgImageData = UIImageJPEGRepresentation(image, 1.0)
31
34
  // let documentsURL = FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask)[0]
@@ -38,29 +41,40 @@
38
41
  // }
39
42
 
40
43
  // print(fileURL)
44
+ // print(pngImageData!)
45
+ // print("サーバーと通信をする")
41
46
 
47
+
42
- // ファイルの送信
48
+ // 送信処理
43
- var request = URLRequest(url: URL(string: "http://192.168.100.16:8200/form.php")!)
49
+ var request = URLRequest(url: URL(string: "http://192.168.100.16:8200")!)
44
50
  request.httpMethod = "POST"
45
- request.addValue("text/plain", forHTTPHeaderField: "content-type")
46
- request.addValue("image/png", forHTTPHeaderField: "content-type")
51
+ request.addValue("application/json", forHTTPHeaderField: "content-type")
47
- request.httpBody = "dummy=dummy&id=(UUID().uuidString)&files[]=(pngImageData)".data(using: .utf8)
48
52
 
53
+ do{
54
+ // クエリをサーバーに投げる
55
+ request.httpBody = try JSONEncoder().encode(["query":"mutation{data(uuid:\"(UUID().uuidString)\",hash:\"(obj.hashValue)\",data:\"0000000\")}"])
56
+ }catch{
57
+ print("エラー")
58
+ }
59
+
49
- let task = URLSession.shared.uploadTask(with: request, from: nil) {[self]data, response, err in
60
+ let t = URLSession.shared.uploadTask(with: request, from: nil) { data, response, err in
50
61
  if err != nil{
51
62
  print("エラー")
52
63
  }
53
64
 
54
- print(String(data: data!,encoding: .utf8)!)
65
+ let resultData = String(data: data!,encoding: .utf8)!
66
+ // print(resultData)
67
+ // 送信済みリストを取得
68
+ print("通信結果", resultData)
69
+ // func2(resultData: resultData)
55
70
  }
56
- task.resume()
71
+ t.resume()
57
- print("通信終わり")
58
- Thread.sleep(forTimeInterval: 10)
59
72
 
73
+ sleep(5)
60
74
 
61
-
62
75
  }
63
76
  }
64
77
  })
78
+ }
65
79
  ```
66
80
  最初は一度pngファイルに保存してから送信しようとしてたのですが、ファイルに保存しなくてもpng形式に変換すれば送れそうだったので、`pngImageData`に入ったpngデータを送信しようとしてます。その関係でコメントアウトが多くなってます。

1

修正

2021/06/01 12:11

投稿

ryo-dev
ryo-dev

スコア437

title CHANGED
File without changes
body CHANGED
@@ -42,7 +42,8 @@
42
42
  // ファイルの送信
43
43
  var request = URLRequest(url: URL(string: "http://192.168.100.16:8200/form.php")!)
44
44
  request.httpMethod = "POST"
45
+ request.addValue("text/plain", forHTTPHeaderField: "content-type")
45
- request.addValue("application/json", forHTTPHeaderField: "content-type")
46
+ request.addValue("image/png", forHTTPHeaderField: "content-type")
46
47
  request.httpBody = "dummy=dummy&id=(UUID().uuidString)&files[]=(pngImageData)".data(using: .utf8)
47
48
 
48
49
  let task = URLSession.shared.uploadTask(with: request, from: nil) {[self]data, response, err in