آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

تغییر عکس پروفایل کاربر در اندروید 

سپهر  11 سال پیش  11 سال پیش
+3 0

من در برنامم پروفایل کاربری دارم که کاربر میتونه عکس پروفایلش رو تغییر بده (مانند اپ های شبکه های اجتماعی)

از دوستانی که در این زمینه تجربه دارن و  کار کردن راهنمایی میخواستم که این سیستم تغییر عکس پروفایل به چه صورت هست 

که قابلیت های :

 crop کردن

انتخاب نرم افزار پیشفرض گوشی برای کراپ کردن

عکس گرفتن با دوربین و کراپ کردن

آپلود عکس روی سرور

رو داشته باشه

اگر کتابخونه آماده ای هم برای این کار وجود داره ممنون میشم معرفی کنید

البته خودم به یک نتایجی رسیدم اگر روش بهتری پیدا بشه از اون استفاده می کنم

+2 0
کراپ کردن لینک خیلی مفیده! (11 سال پیش)
+2 0
ممنون میثم جان ولی این فقط برای گرفتن عکس توسط دوربین هست ، بخشی از کار منو راه میندازه بازم ممنون (11 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Hossein Kurd  11 سال پیش
+2 0

برای آپلود عکس من قبلا سوال پرسیده بودم

کتابخوانه های:

httpmime-4.0.1.jar
و
apache-mime4j-0.6.jar

برای گرفتن عکس هم الان شرکت هستم، رسیدم کدش رو می ذارم

0 0
ممنون از پاسخت ولی مگه httpmime منسوخ نشده ؟! (11 سال پیش)
0 0
دوتا کتابخونه بود که معرفی کردم، شما از apache-mime4j-0.6.jar استفاده کن (11 سال پیش)
پاسخ به سوال 
سپهر  11 سال پیش
+3 0

جوابی که من گرفتم

 public class ImageChooser extends Activity {

private AlertDialog dialog;
private static final int PICK_FROM_CAMERA = 1;
private static final int CROP_FROM_CAMERA = 2;
private static final int PICK_FROM_FILE = 3;

private ListView list;

private Uri mImageCaptureUri;
String Path = Environment.getExternalStorageDirectory().getAbsolutePath() +
"/path";


@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_chooser);

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);

createBrowseDialog(this);

}


private void createBrowseDialog(Context context)
{
list = (ListView) findViewById(R.id.listChooser);

final String[] items = new String[]{ "Take from camera", "Select from gallery" };
ArrayAdapter<String> adapter =
new ArrayAdapter<String>(context, android.R.layout.select_dialog_item,
android.R.id.text1, items);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
if (position == 0)
{//pick from camera
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File dir = new File(Path);
if ( !dir.exists())
dir.mkdirs();
mImageCaptureUri = Uri.fromFile(new File(dir,
"avatar" + String.valueOf(System.currentTimeMillis()) + ".jpg"));

intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,
mImageCaptureUri);

try {
intent.putExtra("return-data", true);

startActivityForResult(intent, PICK_FROM_CAMERA);
}
catch (ActivityNotFoundException e) {
e.printStackTrace();
}

} else { //pick from file
Intent intent = new Intent();
new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);

startActivityForResult(Intent.createChooser(intent,
"Complete action using"), PICK_FROM_FILE);
}

}
});
}


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

if (resultCode != RESULT_OK)
return;

switch (requestCode) {
case PICK_FROM_CAMERA:

// mImageCaptureUri = data.getData();

doCrop();

break;

case PICK_FROM_FILE:

mImageCaptureUri = data.getData();

doCrop();

break;

case CROP_FROM_CAMERA:

Bundle extras = data.getExtras();

if (extras != null) {
Bitmap photo = extras.getParcelable("data");

File dir = new File(Path);
if ( !dir.exists())
dir.mkdirs();

String fileName = "avatar" +
String.valueOf(System.currentTimeMillis()) + ".jpg";

File file = new File(dir, fileName);
FileOutputStream fOut = null;
try {
fOut = new FileOutputStream(file);
photo.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
fOut.flush();
fOut.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
uploadImage("http://192.168.1.2/uploader/sepehr.php",
Path + "/" + fileName);
File f = new File(Path + "/" + fileName);

if (f.exists())
f.delete();

// mImageView.setImageBitmap(photo);
}

// break;

}
}


private void doCrop() {

final ArrayList<CropOption> cropOptions = new ArrayList<CropOption>();

Intent intent = new Intent("com.android.camera.action.CROP");
intent.setType("image/*");

List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, 0);

int size = list.size();

if (size == 0) {
Toast.makeText(this, "Can not find image crop app", Toast.LENGTH_SHORT).show();

return;
} else {
intent.setData(mImageCaptureUri);

intent.putExtra("outputX", 100);
intent.putExtra("outputY", 100);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);

if (size == 1) {
Intent i = new Intent(intent);
ResolveInfo res = list.get(0);

i.setComponent(new ComponentName(res.activityInfo.packageName,
res.activityInfo.name));

startActivityForResult(i, CROP_FROM_CAMERA);
} else {
for (ResolveInfo res: list) {
final CropOption co = new CropOption();

co.title = getPackageManager().getApplicationLabel(
res.activityInfo.applicationInfo);
co.icon = getPackageManager().getApplicationIcon(
res.activityInfo.applicationInfo);
co.appIntent = new Intent(intent);

co.appIntent.setComponent(new ComponentName(
res.activityInfo.packageName, res.activityInfo.name));

cropOptions.add(co);
}

CropOptionAdapter adapter =
new CropOptionAdapter(getApplicationContext(), cropOptions);

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose Crop App");
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int item) {
startActivityForResult(cropOptions.get(item).appIntent,
CROP_FROM_CAMERA);
}
});

builder.setOnCancelListener(new DialogInterface.OnCancelListener() {

@Override
public void onCancel(DialogInterface dialog) {

if (mImageCaptureUri != null) {
getContentResolver().delete(mImageCaptureUri, null, null);
mImageCaptureUri = null;
}
}
});

AlertDialog alert = builder.create();

alert.show();
}
}

}


public void uploadImage(String url, String selectedPath) {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);

MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
File f = new File(selectedPath);
if (f.exists())
{
builder.addTextBody("key", "vahid");
builder.addBinaryBody("uploaded_file", f);
HttpEntity entity = builder.build();
//
post.setEntity(entity);
try {
HttpResponse response = client.execute(post);
HttpEntity entity1 = response.getEntity();

}
catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .