百度图片AI创作批量生成图片并下载

@SuppressLint("CheckResult")
    public void downloadPicture(Context context) {
        Observable.create(new ObservableOnSubscribe<Boolean>() {
            @Override
            public void subscribe(@NotNull ObservableEmitter<Boolean> observableEmitter) throws Exception {
                //第一步:POST访问https://image.baidu.com/aigc/generate
                //参数:query=水杯图片 querycate=8 width=512 height=512 modelParameter[quality]=0 modelParameter[id]=0
                //响应:{
                //    "status": 0,
                //    "taskid": 826337523,
                //    "descList": [
                //        "空中",
                //        "完成度高"
                //    ],
                //    "timestamp": "1732779222",
                //    "token": "53574d46d5823407695ca4e43153521c",
                //    "taskStrategyData": {}
                //}

                //第二步:GET请求:https://image.baidu.com/aigc/query?taskid=2325094922&token=d6568f2e44757840a4f43b7c1e4a2d5d&timestamp=1732778425
                //需要一直请求,直到isGenerate=true  简单处理可以延迟请求
                //响应:{
                //    "isGenerate": true,
                //    "progress": 100,
                //    "algoprocess": 0,
                //    "picArr": [
                //        {
                //            "src": "http://gips2.baidu.com/it/u=742902223,4245250481\u0026fm=3042\u0026app=3042\u0026f=JPEG?w=512\u0026h=512",
                //            "wmkSrc": "http://gips2.baidu.com/it/u=742902223,4245250481\u0026fm=3042\u0026app=3042\u0026f=JPEG\u0026wm=1,huayi,0,0,13,9\u0026wmo=0,0\u0026w=512\u0026h=512",
                //            "width": 512,
                //            "height": 512,
                //            "tag": "水杯图片",
                //            "quality": "0"
                //        },
                //        {
                //            "src": "http://gips0.baidu.com/it/u=1852877578,4013248267\u0026fm=3042\u0026app=3042\u0026f=JPEG?w=512\u0026h=512",
                //            "wmkSrc": "http://gips0.baidu.com/it/u=1852877578,4013248267\u0026fm=3042\u0026app=3042\u0026f=JPEG\u0026wm=1,huayi,0,0,13,9\u0026wmo=0,0\u0026w=512\u0026h=512",
                //            "width": 512,
                //            "height": 512,
                //            "tag": "水杯图片",
                //            "quality": "0"
                //        },
                //        {
                //            "src": "http://gips0.baidu.com/it/u=1921500114,589065410\u0026fm=3042\u0026app=3042\u0026f=JPEG?w=512\u0026h=512",
                //            "wmkSrc": "http://gips0.baidu.com/it/u=1921500114,589065410\u0026fm=3042\u0026app=3042\u0026f=JPEG\u0026wm=1,huayi,0,0,13,9\u0026wmo=0,0\u0026w=512\u0026h=512",
                //            "width": 512,
                //            "height": 512,
                //            "tag": "水杯图片",
                //            "quality": "0"
                //        },
                //        {
                //            "src": "http://gips3.baidu.com/it/u=3917000728,106920042\u0026fm=3042\u0026app=3042\u0026f=JPEG?w=512\u0026h=512",
                //            "wmkSrc": "http://gips3.baidu.com/it/u=3917000728,106920042\u0026fm=3042\u0026app=3042\u0026f=JPEG\u0026wm=1,huayi,0,0,13,9\u0026wmo=0,0\u0026w=512\u0026h=512",
                //            "width": 512,
                //            "height": 512,
                //            "tag": "水杯图片",
                //            "quality": "0"
                //        }
                //    ]
                //}

                OkHttpClient client = new OkHttpClient();
                List<CategoryVo> categoryVos = com.cmct.module_tunnel.utils.Util.getAllCategoryVo();
                for (CategoryVo vo : categoryVos) {
                    for (CategoryVo categoryVo : vo.getChildList()) {
                        MultipartBody body = new MultipartBody.Builder()
                                .setType(MultipartBody.FORM)
                                .addFormDataPart("query", categoryVo.getName())//创作关键字
                                .addFormDataPart("querycate", "8")
                                .addFormDataPart("width", "512")
                                .addFormDataPart("height", "512")
                                .build();
                        Request request = new Request.Builder()
                                .url("https://image.baidu.com/aigc/generate")
                                .post(body)
                                .build();

                        Response response = client.newCall(request).execute();
                        String result = response.body().string();
                        JSONObject jsonObject = new JSONObject(result);
                        int status = jsonObject.getInt("status");
                        if (status != 0) {
                            continue;
                        }
                        long taskid = jsonObject.getLong("taskid");
                        String timestamp = jsonObject.getString("timestamp");
                        String token = jsonObject.getString("token");

                        Thread.sleep(5000);//上面调用接口以后,创作需要时间,这里等待5秒省去轮询逻辑


                        String url = "https://image.baidu.com/aigc/query?taskid=" + taskid + "&token=" + token + "&timestamp=" + timestamp;
                        // 构建一个Request对象
                        Request request2 = new Request.Builder()
                                .url(url)
                                .build();
                        Response response2 = client.newCall(request2).execute();
                        String result2 = response2.body().string();
                        JSONObject jsonObject2 = new JSONObject(result2);
                        JSONArray jsonArray = jsonObject2.getJSONArray("picArr");
                        JSONObject jsonObject3 = jsonArray.getJSONObject(0);//返回多张,这里只取第一张,根据业务需求改变
                        String src = jsonObject3.getString("src");

                        String sourcePath = FilePath.getSDCardPath() + "/source";
                        File file = Glide.with(context).asFile().load(src).submit().get();
                        FileUtils.copyFile(file, new File(sourcePath + "/" + "ic_" + PinYinUtil.getPinYin(categoryVo.getName()) + ".jpeg"));
                    }
                }

                observableEmitter.onNext(true);
                observableEmitter.onComplete();
            }
        }).subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<Boolean>() {
                    @Override
                    public void accept(Boolean aBoolean) throws Exception {

                    }
                });
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容