jhansireddy / AndroidScannerDemo

ScanLibrary is an android document scanning library built on top of OpenCV, using the app you will be able to select the exact edges and crop the document accordingly from the selected 4 edges and change the perspective transformation of the cropped image.
MIT License
1.07k stars 472 forks source link

Please some one help me to add bitmap center crop #151

Open Itscrazyshivam opened 3 years ago

Itscrazyshivam commented 3 years ago

Hello, i am trying to add center crop in my code but i get issue please help me to solve this.

here is my current codes, //set wallpaper on Home Screen private void setWallpaperToHomeScreen() { relativeLayoutLoadMore.setVisibility(View.VISIBLE); Glide.with(this) .asBitmap() .load(Config.ADMIN_PANEL_URL+"/images/"+arrayList.get(currentPosition).getImage_url()) .into(new CustomTarget() { @RequiresApi(api = Build.VERSION_CODES.N) @Override public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {

                    WallpaperManager wallpaperManager = WallpaperManager.getInstance(WallpaperDetailsActivity.this);
                    try {

                        DisplayMetrics metrics = new DisplayMetrics();
                        getWindowManager().getDefaultDisplay().getMetrics(metrics);
                        int height = metrics.heightPixels;
                        int width = metrics.widthPixels;
                        Bitmap bitmap = Bitmap.createScaledBitmap(resource,width,height, true);
                        wallpaperManager.getDesiredMinimumWidth();//returned 1280 on s3
                        wallpaperManager.getDesiredMinimumHeight();//also returned 1280 on s3
                        wallpaperManager.suggestDesiredDimensions(width, height);
                        wallpaperManager.setBitmap(bitmap,null, true, WallpaperManager.FLAG_SYSTEM);
                        new Handler().postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                Snackbar.make(rootLayout,"Wallpaper was set successfully",Snackbar.LENGTH_LONG).show();
                                relativeLayoutLoadMore.setVisibility(View.GONE);
                                showFullScreenAds();
                            }
                        }, Constant.DELAY_SET_WALLPAPER);
                    } catch (IOException e) {
                        e.printStackTrace();
                        relativeLayoutLoadMore.setVisibility(View.GONE);
                    }

                }
                @Override
                public void onLoadCleared(@Nullable Drawable placeholder) {

                }
    });
}

Code that i want add in my app public static void setWallpaper(Context context, BitmapDrawable wallpaper) {

try {

        WallpaperManager wallpaperManager = WallpaperManager.getInstance(context);

                if(wallpaper != null) {

                            Bitmap bmp = wallpaper.getBitmap();

                                        DisplayMetrics metrics = new DisplayMetrics();

                                                    WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

                                                                windowManager.getDefaultDisplay().getMetrics(metrics);

                                                                            int height = metrics.heightPixels;

                                                                                        int width = metrics.widthPixels;

                                                                                                    wallpaperManager.setWallpaperOffsetSteps(1, 1);

                                                                                                                wallpaperManager.suggestDesiredDimensions(width, height);

                                                                                                                            Bitmap bitmap = centerCropWallpaper(context, bmp, Math.min(wallpaperManager.getDesiredMinimumWidth(), wallpaperManager.getDesiredMinimumHeight()));

                                                                                                                                        wallpaperManager.setBitmap(bitmap);

                                                                                                                                                } else {

                                                                                                                                                            Log.e(TAG, "wallpaper could not be set.");

                                                                                                                                                                    }

                                                                                                                                                                        } catch (Exception ex) {

                                                                                                                                                                                Log.e(TAG, "error setting wallpaper. " + ex.getMessage(), ex);

                                                                                                                                                                                    }

                                                                                                                                                                                    }

private static Bitmap centerCropWallpaper(Context context, Bitmap wallpaper, int desiredHeight){

float scale = (float) desiredHeight / wallpaper.getHeight();

    int scaledWidth = (int) (scale * wallpaper.getWidth());

        DisplayMetrics metrics = new DisplayMetrics();

            WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

                windowManager.getDefaultDisplay().getMetrics(metrics);

                    int deviceWidth = metrics.widthPixels;

                        int imageCenterWidth = scaledWidth /2;

                            int widthToCut = imageCenterWidth - deviceWidth / 2;

                                int leftWidth = scaledWidth - widthToCut;

                                    Bitmap scaledWallpaper = Bitmap.createScaledBitmap(wallpaper, scaledWidth, desiredHeight, false);

                                        return Bitmap.createBitmap(scaledWallpaper, widthToCut, 0, leftWidth, desiredHeight);

                                        }

please help me to add this my app