Cannot use Android Crop image crop library in Android -
i developing android project. in project, want add crop image feature. used library, https://github.com/jdamcd/android-crop. when use it. giving me error. please see scenario below.
this how installed.
i put in grandle, compile 'com.soundcloud.android:android-crop:1.0.1@aar'
i put in manifest file,
this how using in code.
i open image picker this
crop.pickimage(currentactivity.this, image_chooser_request_coode);
in onactivityresult, doing this
@override protected void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); if(requestcode==image_chooser_request_coode && resultcode == result_ok) { crop.of(data.getdata(),null).assquare().start(createitemactivity.this); } else if(requestcode == crop.request_crop && resultcode == result_ok) { uri filepath = data.getdata(); } }
but after crop image , click "ok", result of activity not equal ok. cannot retrieve cropped image data.
so removed resultcode==result_ok , retrieved this
if(requestcode == crop.request_crop) { uri filepath = data.getdata(); }
data null. please suggest wrong code , how can fix it? please me. correct way use it.
add in build.gradle
file
repositories { mavencentral() } dependencies { compile 'com.edmodo:cropper:1.0.1' }
make layout of image this
<?xml version="1.0" encoding="utf-8"?> <scrollview android:id="@+id/scrollview" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".mainactivity"> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="@dimen/content_padding"> <textview android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/title" android:textsize="24sp" android:textstyle="bold"/> <com.edmodo.cropper.cropimageview android:id="@+id/cropimageview" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margintop="@dimen/content_padding" android:adjustviewbounds="true" android:scaletype="centerinside" android:src="@drawable/butterfly"/> <linearlayout android:id="@+id/fixedaspectratiolayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margintop="@dimen/content_padding" android:orientation="horizontal"> <textview android:id="@+id/fixedaspectratio" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="center_vertical|end" android:text="@string/fixedaspectratio"/> <framelayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"> <togglebutton android:id="@+id/fixedaspectratiotoggle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical|start"/> </framelayout> </linearlayout> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margintop="@dimen/content_padding_half" android:orientation="horizontal"> <textview android:id="@+id/aspectratioxheader" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="end" android:text="@string/aspectratioxheader"/> <textview android:id="@+id/aspectratiox" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="start" tools:text="10"/> </linearlayout> <seekbar android:id="@+id/aspectratioxseek" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="10"/> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margintop="@dimen/content_padding_half" android:orientation="horizontal"> <textview android:id="@+id/aspectratioyheader" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="end" android:text="@string/aspectratioyheader"/> <textview android:id="@+id/aspectratioy" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="start" tools:text="10"/> </linearlayout> <seekbar android:id="@+id/aspectratioyseek" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="10"/> <linearlayout android:id="@+id/showguidelineslayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margintop="@dimen/content_padding_half" android:orientation="horizontal"> <textview android:id="@+id/showguidelines" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="end" android:text="@string/showguidelines"/> <framelayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"> <spinner android:id="@+id/showguidelinesspin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:entries="@array/showguidelinesarray" android:gravity="start"/> </framelayout> </linearlayout> <button android:id="@+id/button_crop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margintop="@dimen/content_padding" android:minwidth="120dp" android:text="@string/crop" android:textcolor="#33b5e5" android:textsize="20sp"/> <imageview android:id="@+id/croppedimageview" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margintop="@dimen/content_padding" android:adjustviewbounds="true" android:contentdescription="@string/croppedimagedesc" android:scaletype="centerinside"/> </linearlayout> </scrollview>
mainactivity.java
public class mainactivity extends activity { private static final int guidelines_on_touch = 1; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); requestwindowfeature(window.feature_no_title); setcontentview(r.layout.activity_main); // initialize views. final togglebutton fixedaspectratiotogglebutton = (togglebutton) findviewbyid(r.id.fixedaspectratiotoggle); final textview aspectratioxtextview = (textview) findviewbyid(r.id.aspectratiox); final seekbar aspectratioxseekbar = (seekbar) findviewbyid(r.id.aspectratioxseek); final textview aspectratioytextview = (textview) findviewbyid(r.id.aspectratioy); final seekbar aspectratioyseekbar = (seekbar) findviewbyid(r.id.aspectratioyseek); final spinner guidelinesspinner = (spinner) findviewbyid(r.id.showguidelinesspin); final cropimageview cropimageview = (cropimageview) findviewbyid(r.id.cropimageview); final imageview croppedimageview = (imageview) findviewbyid(r.id.croppedimageview); final button cropbutton = (button) findviewbyid(r.id.button_crop); // initializes fixedaspectratio toggle button. fixedaspectratiotogglebutton.setoncheckedchangelistener(new oncheckedchangelistener() { @override public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) { cropimageview.setfixedaspectratio(ischecked); cropimageview.setaspectratio(aspectratioxseekbar.getprogress(), aspectratioyseekbar.getprogress()); aspectratioxseekbar.setenabled(ischecked); aspectratioyseekbar.setenabled(ischecked); } }); // set seek bars disabled until toggle button checked. aspectratioxseekbar.setenabled(false); aspectratioyseekbar.setenabled(false); aspectratioxtextview.settext(string.valueof(aspectratioxseekbar.getprogress())); aspectratioytextview.settext(string.valueof(aspectratioxseekbar.getprogress())); // initialize aspect ratio x seekbar. aspectratioxseekbar.setonseekbarchangelistener(new onseekbarchangelistener() { @override public void onprogresschanged(seekbar aspectratioxseekbar, int progress, boolean fromuser) { if (progress < 1) { aspectratioxseekbar.setprogress(1); } cropimageview.setaspectratio(aspectratioxseekbar.getprogress(), aspectratioyseekbar.getprogress()); aspectratioxtextview.settext(string.valueof(aspectratioxseekbar.getprogress())); } @override public void onstarttrackingtouch(seekbar seekbar) { // nothing. } @override public void onstoptrackingtouch(seekbar seekbar) { // nothing. } }); // initialize aspect ratio y seekbar. aspectratioyseekbar.setonseekbarchangelistener(new onseekbarchangelistener() { @override public void onprogresschanged(seekbar aspectratioyseekbar, int progress, boolean fromuser) { if (progress < 1) { aspectratioyseekbar.setprogress(1); } cropimageview.setaspectratio(aspectratioxseekbar.getprogress(), aspectratioyseekbar.getprogress()); aspectratioytextview.settext(string.valueof(aspectratioyseekbar.getprogress())); } @override public void onstarttrackingtouch(seekbar seekbar) { // nothing. } @override public void onstoptrackingtouch(seekbar seekbar) { // nothing. } }); // set guidelines spinner. guidelinesspinner.setonitemselectedlistener(new adapterview.onitemselectedlistener() { public void onitemselected(adapterview<?> adapterview, view view, int i, long l) { cropimageview.setguidelines(i); } public void onnothingselected(adapterview<?> adapterview) { // nothing. } }); guidelinesspinner.setselection(guidelines_on_touch); // initialize crop button. cropbutton.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { final bitmap croppedimage = cropimageview.getcroppedimage(); croppedimageview.setimagebitmap(croppedimage); } }); } }
for more detail visit : https://github.com/edmodo/cropper
Comments
Post a Comment