Kadruj obraz w Androidzie

Chcę zrobić kadrowanie obrazu znalazłem kilka bardzo przydatnych, ale jakoś jest jak brak przyciemnienia niezaznaczonych obszarów, więc zastanawiam się, czy ktoś wie jak? czy poprowadzić mnie we właściwym kierunku? Tutorial online znalazłem pokazuje, że jest będzie przyciemnić wybrany obszar, ale kiedy go używać, to nie będzie. proszę mi pomóc dziękuję bardzo i przepraszam za moją złą znajomość języka angielskiego.

Linki do tutoriala, którego używam.

Crop image tutorial 1

Samouczek kadrowania obrazu 2

Chcę, żeby to było coś takiego.

Chcę, żeby to było coś takiego.

editButton.setOnClickListener(new Button.OnClickListener(){

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent goEdit;
            goEdit = new Intent(PreviewActivity.this, CropImage.class);
            goEdit.putExtra("image-path", path);
            goEdit.putExtra("scale", true);
            goEdit.putExtra("fileName", nameFromPath);
            //finish();
            checkEdit = true;
            startActivityForResult(goEdit,0);

        }
});

EDIT Używam tego słuchacza przycisku, aby wywołać do pliku cropImage, wywołując do klasy cropimage activity. Jest to niestandardowa intencja nie funkcja przycinania wewnątrz Androida, ale myślę, że jest to jego kopia, dzięki czemu obsługuje wszystkie wersje, ale kiedy wywołuję do niego wybrany obszar nie rozjaśnia się i donno gdzie jest problem czy ktoś może mnie poprowadzić? Dzięki. To jest biblioteka, z której korzystam drioid4you crop image

Author: user1235085, 2013-03-05

4 answers

Czy można użyć domyślnej funkcji przycinania Androida?

Oto Mój kod

private void performCrop(Uri picUri) {
    try {
        Intent cropIntent = new Intent("com.android.camera.action.CROP");
        // indicate image type and Uri
        cropIntent.setDataAndType(picUri, "image/*");
        // set crop properties here
        cropIntent.putExtra("crop", true);
        // indicate aspect of desired crop
        cropIntent.putExtra("aspectX", 1);
        cropIntent.putExtra("aspectY", 1);
        // indicate output X and Y
        cropIntent.putExtra("outputX", 128);
        cropIntent.putExtra("outputY", 128);
        // retrieve data on return
        cropIntent.putExtra("return-data", true);
        // start the activity - we handle returning in onActivityResult
        startActivityForResult(cropIntent, PIC_CROP);
    }
    // respond to users whose devices do not support the crop action
    catch (ActivityNotFoundException anfe) {
        // display an error message
        String errorMessage = "Whoops - your device doesn't support the crop action!";
        Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
        toast.show();
    }
}

Zadeklarować:

final int PIC_CROP = 1;
Na górze.

W metodzie onactivity result wpisz następujący kod:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == PIC_CROP) {
        if (data != null) {
            // get the returned data
            Bundle extras = data.getExtras();
            // get the cropped bitmap
            Bitmap selectedBitmap = extras.getParcelable("data");

            imgView.setImageBitmap(selectedBitmap);
        }
    }
}

Jest to dla mnie dość łatwe do wdrożenia, a także pokazuje ciemne obszary.

 49
Author: Akbari Dipali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-06 14:46:09

Znalazłem naprawdę fajną bibliotekę, wypróbuj to. jest to naprawdę gładkie i łatwe w użyciu.

Https://github.com/TakuSemba/CropMe

 2
Author: Taku Semba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-13 14:43:03

Mam nadzieję, że dobrze ci idzie. możesz użyć mojego kodu, aby przyciąć obraz.musisz zrobić klasę i użyć tej klasy do swoich klas XMl i java. kadruj obraz . możesz przyciąć wybrany obraz do okręgu i kwadratu w wielu opcjach. mam nadzieję, że w pełni to będzie działać dla Ciebie.ponieważ jest to całkowicie możliwe do opanowania dla Ciebie i możesz to zmienić zgodnie z Tobą.

Miłej pracy:)

 1
Author: John smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-15 06:14:51

Ta biblioteka: Android-Image-Cropper jest bardzo wydajna dla CropImages. Ma 3731 gwiazd na GitHubie w tym czasie.

Możesz przyciąć swoje obrazy za pomocą kilku linijek kodu.

1-Dodaj dependecies do buid.gradle (Module: app)

compile 'com.theartofdev.edmodo:android-image-cropper:2.7.+'

2-Dodaj uprawnienia do AndroidManifest.xml

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

3-Dodaj CropImageActivity do AndroidManifest.xml

<activity android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
 android:theme="@style/Base.Theme.AppCompat"/>

4-Rozpocznij działanie z jednym z poniższych przypadków, w zależności od Twojego wymagania.

// start picker to get image for cropping and then use the image in cropping activity
CropImage.activity()
.setGuidelines(CropImageView.Guidelines.ON)
.start(this);

// start cropping activity for pre-acquired image saved on the device
CropImage.activity(imageUri)
.start(this);

// for fragment (DO NOT use `getActivity()`)
CropImage.activity()
.start(getContext(), this);

5-uzyskaj wynik w onActivityResult

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
    CropImage.ActivityResult result = CropImage.getActivityResult(data);
    if (resultCode == RESULT_OK) {
      Uri resultUri = result.getUri();
    } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
      Exception error = result.getError();
    }
  }
}

Możesz zrobić kilka dostosowań , Jak ustawić proporcje lub kształt do prostokąta, owalu i wiele więcej.

 0
Author: Soon Santos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-23 11:43:13