@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. Убедитесь, что у вас есть разрешение на использование хранилища и пути к изображениям верны.