riku
2025-10-30 e9aa93f381afcf9f9cf0c39f2b9e32375ed49528
app/src/main/java/cn/flightfeather/thirdappmodule/task/CompressPhotoTask.java
@@ -42,43 +42,50 @@
    @Override
    protected Object doInBackground(Object[] objects) {
        outputFIleList = new ArrayList<>();
        for (Mediafile mediafile:mediafileList){
        for (int i = 0; i < mediafileList.size(); i++) {
            Mediafile mediafile = mediafileList.get(i);
            File file = new File(Environment.getExternalStorageDirectory(),(mediafile.getPath()+mediafile.getDescription()));
            String fileName = mediafile.getGuid()+".jpg";
            File outputFile = new File(Environment.getExternalStorageDirectory(),path+fileName);
            outputFile.getParentFile().mkdirs();
            if (!outputFile.getParentFile().mkdirs()) continue;
            BitmapFactory.Options opts = new BitmapFactory.Options();
            //将图片的长宽缩小为1/2
            opts.inSampleSize = 2;
            Bitmap bm = BitmapFactory.decodeFile(file.getAbsolutePath(),opts);
            Bitmap bm = BitmapFactory.decodeFile(file.getAbsolutePath(), opts);
//            if (bm == null) continue;
            int aa = bm.getHeight();
            int bb = bm.getWidth();
            Log.i("bitmap",bm.getHeight()+" "+bm.getWidth());
            Log.i("bitmap", bm.getHeight() + " " + bm.getWidth());
            //压缩缩略图
            Bitmap bmSmall = null;
            int normalSize = 1440;
            int width,height = 0;
            if (bm.getWidth()>=bm.getHeight()){
            int width, height = 0;
            if (bm.getWidth() >= bm.getHeight()) {
                width = normalSize;
                height = normalSize*bm.getHeight()/bm.getWidth();
            }else {
                height =normalSize;
                width = normalSize*bm.getWidth()/bm.getHeight();
                height = normalSize * bm.getHeight() / bm.getWidth();
            } else {
                height = normalSize;
                width = normalSize * bm.getWidth() / bm.getHeight();
            }
            if (bm!=null){
                bmSmall= Bitmap.createScaledBitmap(bm,width,height,true);
            if (bm != null) {
                bmSmall = Bitmap.createScaledBitmap(bm, width, height, true);
                try {
                    bmSmall.compress(Bitmap.CompressFormat.JPEG, 80, new FileOutputStream(outputFile.getAbsolutePath()));
                    Log.i("compress success",outputFile.getAbsolutePath());
                    // 当图片大于1MB时,才会进行压缩处理
                    if (file.length() > 1024L * 1024) {
                        bmSmall.compress(Bitmap.CompressFormat.JPEG, 80, new FileOutputStream(outputFile.getAbsolutePath()));
                    } else {
                        bmSmall.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(outputFile.getAbsolutePath()));
                    }
                    Log.i("compress success", outputFile.getAbsolutePath());
                    outputFIleList.add(outputFile);
                        bm.recycle();
                        bm=null;
                    bm.recycle();
                    bmSmall.recycle();
                    bmSmall =null;
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                    Log.i("compress failure",outputFile.getAbsolutePath());
                    Log.i("compress failure", outputFile.getAbsolutePath());
                }
            }
        }