Commit 6f1b8b9e authored by netyouli's avatar netyouli

添加描述中文翻译英文的功能

parent b4412ef6
......@@ -76,8 +76,21 @@ class NewsAPI {
return MidJourneyModel.fromJson(response);
}
// https://api.kertennet.com/live/translate?text=美女喜欢帅哥&to=en
// 'https://frozenland.cc/index.php/translate?query='
static Future<TranslateModel> translate(String content) async {
final url = 'https://frozenland.cc/index.php/translate';
var response = await Dio().get(
url,
queryParameters: {
'query': content
}
);
return TranslateModel.fromJson(response.data);
}
// 融合图片
static Future<MidJourneyModel> blendImageByMidJourney(List<String> urls, String question, int conversionId) async {
static Future<MidJourneyModel> blendImageByMidJourney(List<String> urls) async {
var response = await HttpUtil().post('/midJourney/createImageByBlend', data: {
// "conversionId": conversionId,
// "next": 0,
......
......@@ -38,7 +38,7 @@ class HttpUtil {
connectTimeout: 10000,
// 响应流上前后两次接受到数据的间隔,单位为毫秒。
receiveTimeout: 20000,
receiveTimeout: 150000,
// Http请求头.
headers: {},
......@@ -69,7 +69,18 @@ class HttpUtil {
dio.interceptors.add(InterceptorsWrapper(
onRequest: (options, handler) {
String token = UserStore.to.token;
String url = options.uri.toString();
Logger.debugPrint('Request ${options.method} URL: $url');
if (options.data != null) {
try {
String params = jsonEncode(options.data);
Logger.debugPrint('Request Params: $params');
} catch (error) {
Logger.debugPrint('Request Params: ${options.data}');
}
} else {
Logger.debugPrint('Request Params: null');
}
if (token.isNotEmpty) {
options.headers['Authorization'] = token;
}
......@@ -93,12 +104,24 @@ class HttpUtil {
},
onResponse: (response, handler) {
// Do something with response data
if (response.data != null) {
try {
String resJson = jsonEncode(response.data);
Logger.debugPrint('Response: $resJson');
} catch (e) {
Logger.debugPrint('Response: ${response.data}');
}
} else {
Logger.debugPrint('Response: null');
}
return handler.next(response); // continue
// 如果你想终止请求并触发一个错误,你可以 reject 一个`DioError`对象,如`handler.reject(error)`,
// 这样请求将被中止并触发异常,上层catchError会被调用。
},
onError: (DioError e, handler) {
// Do something with response error
Logger.debugPrint('Response error: ${e.response?.data}');
Logger.debugPrint('Response message: ${e.message}');
Loading.dismiss();
ErrorEntity eInfo = createErrorEntity(e);
onError(eInfo);
......@@ -218,7 +241,6 @@ class HttpUtil {
queryParameters: params,
options: Options(responseType: ResponseType.stream),
);
print("image Url: $path, statusCode = ${response.statusCode}");
final statusCode = response.statusCode ?? 0;
if (statusCode >= 200 && statusCode < 300) {
final stream = await (response.data as ResponseBody).stream.toList();
......@@ -266,14 +288,12 @@ class HttpUtil {
if (authorization != null) {
requestOptions.headers!.addAll(authorization);
}
Logger.debugPrint("request = $SERVER_API_URL$path");
var response = await dio.get(
path,
queryParameters: queryParameters,
options: options,
cancelToken: cancelToken,
);
Logger.debugPrint("response = ${jsonEncode(response.data)}");
return response.data;
}
......@@ -290,8 +310,6 @@ class HttpUtil {
if (authorization != null) {
requestOptions.headers!.addAll(authorization);
}
Logger.debugPrint("request = $SERVER_API_URL$path");
Logger.debugPrint("params = ${jsonEncode(data)}");
var response = await dio.post(
path,
data: data,
......@@ -299,7 +317,6 @@ class HttpUtil {
options: requestOptions,
cancelToken: cancelToken,
);
Logger.debugPrint("response = ${jsonEncode(response.data)}");
return response.data;
}
......
......@@ -29,6 +29,7 @@ class AIDrawImageResultController extends GetxController {
var s = "";
var styleName = "".obs;
var text = "".obs;
var enText = "";
var imageUrl = "".obs;
var progress = 0.obs;
var showProgressView = false.obs;
......@@ -52,6 +53,7 @@ class AIDrawImageResultController extends GetxController {
opearter = arguments["opearter"];
conversionId = arguments["conversionId"];
text.value = arguments["text"] ?? "";
enText = arguments["enText"] ?? "";
ratio = arguments["ratio"];
s = arguments["s"];
styleName.value = arguments["styleName"];
......@@ -139,12 +141,12 @@ class AIDrawImageResultController extends GetxController {
makeBlendImage() async {
progress.value = 0;
final question = '$text --ar $ratio$s';
Logger.debugPrint("question = $question");
// final question = '$text --ar $ratio$s';
// Logger.debugPrint("question = $question");
EasyLoading.show(status: "AI正在生成中...");
try {
// state.isLoading = true;
final res = await NewsAPI.blendImageByMidJourney(imageUrls, "--ar $ratio$s" ,conversionId);
final res = await NewsAPI.blendImageByMidJourney(imageUrls);
if (res.status == 401) {
EasyLoading.showInfo('您还未登录,请登录后体验功能。');
Get.toNamed(AppRoutes.SIGN_IN);
......@@ -169,7 +171,7 @@ class AIDrawImageResultController extends GetxController {
makeDrawImage() async {
progress.value = 0;
final question = '$text --ar $ratio$s';
final question = '$enText --ar $ratio$s';
Logger.debugPrint("question = $question");
EasyLoading.show(status: "AI正在生成中...");
try {
......@@ -192,7 +194,7 @@ class AIDrawImageResultController extends GetxController {
// state.isLoading = false;
} catch (e) {
// state.isLoading = false;
EasyLoading.dismiss();
EasyLoading.showError(e.toString());
}
}
......
......@@ -91,3 +91,54 @@ class MidJourneyImageResponse {
return data;
}
}
class TranslateModel {
String? from;
String? to;
List<TransResult>? transResult;
TranslateModel({this.from, this.to, this.transResult});
TranslateModel.fromJson(Map<String, dynamic> json) {
from = json['from'];
to = json['to'];
if (json['trans_result'] != null) {
transResult = [];
json['trans_result'].forEach((v) {
transResult?.add(new TransResult.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['from'] = this.from;
data['to'] = this.to;
if (this.transResult != null) {
data['trans_result'] = this.transResult?.map((v) => v.toJson()).toList();
}
return data;
}
}
class TransResult {
String? src;
String? dst;
TransResult({this.src, this.dst});
TransResult.fromJson(Map<String, dynamic> json) {
src = json['src'];
dst = json['dst'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['src'] = this.src;
data['dst'] = this.dst;
return data;
}
}
\ No newline at end of file
......@@ -147,6 +147,10 @@ class AIDrawImageController extends GetxController {
}
toImageMarkDrawImage() async {
if (uploadImageUrls.length < 2 || uploadImageUrls.length > 5) {
EasyLoading.showError("请选择2-5张图片");
return;
}
EasyLoading.show(
status: "加载中",
dismissOnTap: false,
......@@ -176,6 +180,10 @@ class AIDrawImageController extends GetxController {
}
toTextMakeDrawImage() async {
if (textController.text.isEmpty) {
EasyLoading.showInfo('请输入生成图片的描述');
return;
}
EasyLoading.show(
status: "加载中",
dismissOnTap: false,
......@@ -185,6 +193,7 @@ class AIDrawImageController extends GetxController {
size: 30,
));
Vibrate.feedback(FeedbackType.impact);
final transformModel = await NewsAPI.translate(textController.text);
final conversionId = await UserAPI.createConversion();
EasyLoading.dismiss();
if (conversionId == 401) {
......@@ -195,6 +204,7 @@ class AIDrawImageController extends GetxController {
arguments: {
"opearter": "textToImage",
"conversionId": conversionId,
"enText": transformModel.transResult?.first.dst ?? textController.text,
"text": textController.text,
"ratio": ratio.value,
"s": s,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment