PDA

View Full Version : تنظیم عکس به عنوان پس زمینه



shs1377
یک شنبه 19 آبان 1392, 12:03 عصر
سلام به دوستان برنامه نویس

من میخوام یک اپ بسازم که دو تا باتن و یک ایمیج ویو داشته باشد وقتی روی باتن اولی کلیک کردم عکس رو دانلود بکنه و توی ایمیج ویو نشون بده و وقتی روی باتن دوم کلیک کردم عکس رو با لابرری که آدرس رو پایین میذارم crop و به عنوان بک گراند گوشی انتخاب کنه
من مشکلم توی فهموندن آدرس این عکسه یعنی آدرسش رو چجوری معرفی کنم نمیدونم

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

Library : https://github.com/biokys/cropimage?files=1

shs1377
یک شنبه 19 آبان 1392, 15:13 عصر
لطفا اگه بلدید سورس کدش رو بذارید

rubiks.kde
یک شنبه 19 آبان 1392, 16:19 عصر
دوست عزیز رو ابتدا دانلود کنید و روی قسمتی از مموری ذخیره کنید حالا دیگه هیچ کاری نداره هم برای نمایش در Imageview و هم برای استفاده از این کتابخانه.

shs1377
یک شنبه 19 آبان 1392, 16:35 عصر
دوست عزیز رو ابتدا دانلود کنید و روی قسمتی از مموری ذخیره کنید حالا دیگه هیچ کاری نداره هم برای نمایش در Imageview و هم برای استفاده از این کتابخانه.

با تشکر از شما دوست عزیز من میگم با چه دستوری آدرس رو به کتابخانه بدم؟؟ منظورم اینه

rubiks.kde
یک شنبه 19 آبان 1392, 19:04 عصر
شما ابتدا بیایید کتابخونه رو به برنامه اضافه کنید بعد به این صورت عمل کنید :

String filePath = آدرس فایل;

Intent intent = new Intent(this, CropImage.class);
intent.putExtra(CropImage.IMAGE_PATH, filePath);
intent.putExtra(CropImage.SCALE, true);
intent.putExtra(CropImage.ASPECT_X, 3);
intent.putExtra(CropImage.ASPECT_Y, 2);
startActivityForResult(intent, REQUEST_CODE_CROP_IMAGE); //public static final int REQUEST_CODE_CROP_IMAGE = 0x3;

مثلا اگه اینا رو توی کلیک یه دکمه بنویسی بعد از زدن دکمه و قرار دادن آدرس عکس در filePath صفحه مربوط به انتخاب قسمتی از عکس فعال میشه و بعد شما با نوشتن تابع زیر منتظر مقدار بازگشتی می مونی :

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

if (resultCode != RESULT_OK) {

return;
}

switch (requestCode) {

case REQUEST_CODE_CROP_IMAGE:

String path = data.getStringExtra(CropImage.IMAGE_PATH);

// if nothing received
if (path == null) {

return;
}

// cropped bitmap
Bitmap bitmap = BitmapFactory.decodeFile(mFileTemp.getPath());

break;
}
super.onActivityResult(requestCode, resultCode, data);
}

حالا خروجی که اینجا به دست میاد عکس کراپت شده میباشه.

shs1377
یک شنبه 19 آبان 1392, 22:32 عصر
با تشکر از شما دوست عزیر اگه یک نمونه برای filepath بدید خیلی خیلی ممنون میشم منظور اینه که یک عکس در sdcard رو بخواند

rubiks.kde
یک شنبه 19 آبان 1392, 23:20 عصر
با تشکر از شما دوست عزیر اگه یک نمونه برای filepath بدید خیلی خیلی ممنون میشم منظور اینه که یک عکس در sdcard رو بخواند


خب کاری نداره شما یه عکس توی آدرس /mnt/sdcardimage.png قرار بده و همین آدرس رو هم در متغییر filepath بزار.

shs1377
دوشنبه 20 آبان 1392, 12:47 عصر
خیلی خیلی ممنون حالا چطور میشه اون عکس crop شده را پس زمینه کرد؟

rubiks.kde
دوشنبه 20 آبان 1392, 15:26 عصر
توی تابع onActivityResult بعد از اینکه عکس crop شد خروجی در یه bitmap به شما داده میشه حالا میتونید این رو روی یه جایی از مموری ذخیره کنید و بعد به عنوان پس زمینه قرار بدید.

برای ست کردن به عنوان پس زمینه هم از کلاس WallpaperManager استفاده کن

مثل این (البته هم میتونی خود bitmap رو بهش بدی و هم آدرس رو )

WallpaperManager myWallpaperManager = WallpaperManager.getInstance(getApplicationContext ());
try {
myWallpaperManager.setBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}

این دسترسی رو هم از منیفست بده :

<uses-permission android:name="android.permission.SET_WALLPAPER">

shs1377
دوشنبه 20 آبان 1392, 15:41 عصر
من این کار رو کردم و بخوبی کار میکنه و ازتون تشکر میکنم فقط مشکل کوچکی که دارم اینه که میخواهم بعد از ست کردن بک گراند ایمیح جدید که crop شده است پاک بشه آیا امکانش هست؟؟؟

rubiks.kde
دوشنبه 20 آبان 1392, 16:50 عصر
عکس اصلی رو ؟ یا خروجی کراپ ؟

shs1377
دوشنبه 20 آبان 1392, 17:50 عصر
عکس اصلی رو ؟ یا خروجی کراپ ؟

خروجی کراپ

shs1377
دوشنبه 20 آبان 1392, 17:51 عصر
اگه بتونید این مشکلم بر طرف کنید که دیگه سنگ تموم گذاشتید

http://barnamenevis.org/showthread.php?426994-%D8%AF%DA%A9%D9%85%D9%87-%D8%AE%D8%B1%D9%88%D8%AC-%D8%AF%D8%B1-grid-view

rubiks.kde
دوشنبه 20 آبان 1392, 23:21 عصر
خروجی کراپ

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

shs1377
دوشنبه 20 آبان 1392, 23:26 عصر
من میخواهم که عکس را فقط برای والپیپر کراپ کند و عکس اصلی کراپ نشود

shs1377
دوشنبه 16 دی 1392, 15:57 عصر
خب خروجی کراب که یه متغیر bitmap بود دیگه لازم نیست پاکش کنی

من منظورم اینه که عکسم crop نشه و مثل قبلش بمونه ولی با این کار عکسم هر دفعه کوچکتر میشه