@cloyd
Вы можете использовать библиотеку Android GraphicsMagick для обрезки фона изображения в формате JPG и его конвертации в формат PNG. Вот пример кода, который показывает, как это сделать:
1 2 3 |
dependencies {
implementation 'graphicsmagick:graphicsmagick:1.3.29'
}
|
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 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" своими реальными путями к файлам изображений.
@cloyd
Извините за путаницу, но библиотека GraphicsMagick не является стандартной или широко используемой в Android разработке. Вместо этого, вы можете использовать встроенные средства Android SDK для обработки изображений. Ниже приведен пример, как обрезать фон изображения JPEG и сохранить его в формате PNG с помощью Android SDK:
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 |
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Rect;
import java.io.FileOutputStream;
public class ImageUtils {
public static void convertJpegToPngWithBackgroundCrop(String inputFilePath, String outputFilePath) {
try {
Bitmap bitmap = BitmapFactory.decodeFile(inputFilePath);
Bitmap croppedBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(croppedBitmap);
canvas.drawColor(Color.TRANSPARENT, android.graphics.PorterDuff.Mode.CLEAR);
Rect srcRect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
Rect destRect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
canvas.drawBitmap(bitmap, srcRect, destRect, null);
FileOutputStream outputStream = new FileOutputStream(outputFilePath);
croppedBitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
|
Вы можете использовать этот код, чтобы обрезать фон изображения в формате JPEG и сохранить его в формате PNG. Убедитесь, что у вас есть разрешение на использование хранилища и пути к изображениям верны.