团队博客-第二阶段冲刺-Day10
团队博客-第二阶段冲刺-Day10
团队任务
完成图片转表格app(TransformMine)的开发
1.统一,简约,漂亮的前端界面
2.完成用户主要功能的开发
3.优化用户体验
4.定时团队任务进行团队任务完成情况的审查
今日完成任务
1.修复最后的一些小bug
2.优化体验
3.测试app的所有功能,排查是否还有问题
4.初步定型,打包app
效果展示:
今日团队任务关键代码:
package com.transform.transformMine.fragment.other; import static android.app.Activity.RESULT_OK; import static com.xuexiang.xui.XUI.getContext; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import android.annotation.SuppressLint; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.provider.MediaStore; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.transform.transformMine.R; import com.transform.transformMine.core.BaseFragment; import com.transform.transformMine.databinding.FragmentTransBinding; import com.xuexiang.xpage.annotation.Page; import com.xuexiang.xpage.enums.CoreAnim; import com.xuexiang.xui.widget.imageview.crop.CropImageView; import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; @Page(anim = CoreAnim.none) public class TransFragment extends BaseFragment<FragmentTransBinding> implements View.OnClickListener { CropImageView cropImageView ; public static final int REQUEST_CODE_PICK_IMAGE = 1; @NonNull @Override protected FragmentTransBinding viewBindingInflate(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, boolean attachToRoot) { return FragmentTransBinding.inflate(inflater, container, attachToRoot); } @Override protected void initViews() { cropImageView = findViewById(R.id.crop_image_view); } @Override protected void initListeners() { binding.btnUpload.setOnClickListener(this); } @SuppressLint("IntentReset") @Override public void onClick(View v) { int id = v.getId(); if (id == R.id.btn_upload){ Intent intent = new Intent(Intent.ACTION_PICK, null); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE); } } @Override public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case REQUEST_CODE_PICK_IMAGE: if (resultCode == RESULT_OK) { // if (data != null) { Uri uri = data.getData(); Bitmap bitmap1 = null; try { Bitmap bitmap = BitmapFactory.decodeStream(getContext().getContentResolver().openInputStream(uri)); bitmap1 = compressByJpeg(bitmap,50); } catch (FileNotFoundException e) { e.printStackTrace(); } cropImageView.setImageBitmap(bitmap1); String imagePath = uri.getPath(); processImage(imagePath); } } break; } } private Bitmap compressByJpeg(Bitmap bitmap, int quality) { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream); byte[] byteArray = outputStream.toByteArray(); return BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); } }
package com.transform.transformMine.baidu.ai.aip; import android.annotation.SuppressLint; import com.transform.transformMine.baidu.ai.aip.utils.Base64Util; import com.transform.transformMine.baidu.ai.aip.utils.FileUtil; import com.transform.transformMine.baidu.ai.aip.utils.HttpUtil; import java.net.URLEncoder; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class formOcrRequest { private String fp = "/data/data/com.transform.transformMine/image/img_1.png"; public String postInfo(String s) { fp = s; Callable<String> task = new Callable<String>() { @Override public String call() throws Exception { String url = "https://aip.baidubce.com"; try { String filePath = fp; byte[] imgData = FileUtil.readFileByBytes(filePath); String imgStr = Base64Util.encode(imgData); String imgParam = URLEncoder.encode(imgStr, "UTF-8"); String param = "image=" + imgParam; String accessToken = "24.e9018a2d.2592000.1688305552.282335-32556468"; String result = HttpUtil.post(url, accessToken, param); return result; } catch (Exception e) { e.printStackTrace(); } return null; } }; FutureTask<String> futureTask = new FutureTask<>(task); new Thread(futureTask).start(); try { String result = futureTask.get(); System.out.println("result: " + result); return result; } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } return null; } }
作者:冰稀饭Aurora
出处:https://www.cnblogs.com/rsy-bxf150/p/17437259.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端