Как создать png из jpg с обрезкой фона в java(android)?

Пользователь

от cloyd , в категории: Другие , 7 месяцев назад

Как создать png из jpg с обрезкой фона в java(android)?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от leila.dickinson , 6 месяцев назад

@cloyd 

Вы можете использовать библиотеку Android GraphicsMagick для обрезки фона изображения в формате JPG и его конвертации в формат PNG. Вот пример кода, который показывает, как это сделать:

  1. Добавьте зависимость в файл build.gradle вашего модуля:
1
2
3
dependencies {
    implementation 'graphicsmagick:graphicsmagick:1.3.29'
}


  1. Создайте метод для обрезки фона изображения и конвертации его в формат PNG:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff;

import com.graphicsmagick.GraphicsMagick;
import com.graphicsmagick.ImageInfo;
import com.graphicsmagick.MagickImage;

import java.io.FileOutputStream;

public class ImageUtils {

    public static void convertJpegToPngWithBackgroundCrop(String inputFilePath, String outputFilePath) {
        try {
            ImageInfo info = new ImageInfo(inputFilePath);
            MagickImage image = new MagickImage(info);

            int width = image.getWidth();
            int height = image.getHeight();

            Bitmap bitmap = BitmapFactory.decodeFile(inputFilePath);
            Bitmap croppedBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(croppedBitmap);
            canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);

            Paint paint = new Paint();
            paint.setColor(Color.BLACK);
            paint.setAntiAlias(true);

            canvas.drawBitmap(bitmap, 0, 0, paint);

            image.readPixels(0, 0, width, height, "BGRA");
            image.setPixels(croppedBitmap.getPixels(), 0, width, 0, 0, width, height);

            image.writeImage(info.getExtension(), outputFilePath);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


  1. Используйте метод, чтобы обрезать фон изображения в формате JPG и сохранить его в формате PNG:
1
2
3
4
String inputFilePath = "/path/to/input/image.jpg";
String outputFilePath = "/path/to/output/image.png";

ImageUtils.convertJpegToPngWithBackgroundCrop(inputFilePath, outputFilePath);


Убедитесь, что вы заменили "/path/to/input/image.jpg" и "/path/to/output/image.png" своими реальными путями к файлам изображений.