罠が多いカメラです。
カメラ関連ややり方何個かあります
その中でカメラを使います。
最終的にこれでいけた
ボタンのonSelectではなくCameraのonSelectなのが超重要。
Set(varPhoto, Camera1.Photo);
Set(varDataUri, JSON(varPhoto, JSONFormat.IncludeBinaryData));
Set(varPureBase64, Substitute(varDataUri, """", ""));
UpdateContext({ newLabelText: 'のびすけ検証3-GPT画像読み取り'.Run(varPureBase64).response });
画像上に"カメラ撮影"ってボタンを作ってそっちで試してましたが、これだとうまくいきません。
ボタンのonSelectが使えない罠
この記事が神だったのですが、まずボタンを押してカメラの制御ができず、カメラのプレビュー画面を押してコントロールする感じみたいです。普通に考えるとそんな使い方しないのにな... そっちのほうが直感的なのか...?
Base64文字列にする処理
Set(varPhoto, Camera1.Photo);
Set(varDataUri, JSON(varPhoto, JSONFormat.IncludeBinaryData));
Set(varPureBase64, Substitute(varDataUri, """", ""));
UpdateContext({ newLabelText: 'のびすけ検証3-GPT画像読み取り'.Run(varPureBase64).response });
これを解説すると
Set(varPhoto, Camera1.Photo);
Set(varDataUri, JSON(varPhoto, JSONFormat.IncludeBinaryData));
ここでvarDataUriにBase64変換したdata:image/png;base64,iVBORw0KGgoAAAANS…==
といった文字列に。ただダブルクォート("")で囲まれた状態になってるので、次のSubstitureで""を消しています。
Set(varPureBase64, Substitute(varDataUri, """", ""));```
関係ないけど
Power Appsの式って言語なんなんだろう。JS指定にしたらQiita上だとアラートでなかったのでとりあえずJS指定にしています。