PDA

View Full Version : کنترل کردن عکسهای ذحیره شده



reza_azizi2010
سه شنبه 23 اردیبهشت 1393, 21:00 عصر
سلام
من توی برنامه ام چند تا عکس دارم، نزدیک 100 تا تقریبا
این تصاویر هیچ وجه مشترکی توی اسمشون ندارن، چطوری میتونم همشون رو انتخاب کنم؟
مثلا میخام همشونو توی یک پیجر نمایش بدم

parvizwpf
سه شنبه 23 اردیبهشت 1393, 23:24 عصر
اولا چطور میخواهید نشون بدید؟ دوما چرا همه رو یه جا میخواهید نشون بدید؟

reza_azizi2010
چهارشنبه 24 اردیبهشت 1393, 00:37 صبح
من میخام بصورت یک آلبوم نشون بدم ، یعنی عکسها پشت سر هم بیان.
منظور من اینه معمولا اسم فایلهارو یکسان میکنن و فقط اندیس آخر فایل رو تغییر میدن که بشه با یک حلقه به همه فایلها دسترسی داشت
اما فایلهای من اسمهای متفاوتی داره
چطوری میتونم به همشون دسترسی داشته باشم؟ بدون اینکه بخام تک تک بهشون اشاره کنم

poorman
چهارشنبه 24 اردیبهشت 1393, 01:09 صبح
سلام

100 تا عکس خیلی زیاده، ولی من تنها یک راه به ذهنم میرسه، اینکه آیدی همشون رو بریزید توی یک آرایه Int بعدش ازشون استفاده کنید

نمیدونم حالا تا چه حد کار درستی باشه، ولی تا جایی که من میدونم حتی اگر اسمشون مشابه باشه، بازم نمیشه آیدی رو ترکیب کرد، چون آیدی از نوع int هست

reza_azizi2010
چهارشنبه 24 اردیبهشت 1393, 01:41 صبح
اگه اسمها مشابه باشه مثلا اینجوری : image1 - image2 , image3 , ... اینجوری خیلی راحت میشه با اندیس یک حلقه به همشون دسترسی داشت. اما وقتی اسمها متفاوت میشه قضیه فرق میکنه.
حتی نمیشه از آرایه استفاده کرد چون اسم عکسهارو مشخص نیست که بخام بریزم تو آرایه!

poorman
چهارشنبه 24 اردیبهشت 1393, 02:29 صبح
تا جایی که من تجربه دارم، نتونستم یک آیدی رو با استرینگ بسازم

یعنی شما نمیتونی بگی

int id = R.Drawable. + "picName";

تلاش زیاد کردم، اما نشد

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

از نرم افزار flash renamer استفاده کن و اسم عکس ها رو گروهی درست کن

الان این عکسها ثابت هست ؟ توی برنامه گذاشتی ؟ اگر اینطوره فک نمیکنم راهی غیر از آرایه باشه

parvizwpf
چهارشنبه 24 اردیبهشت 1393, 02:37 صبح
یه جورایی این تست کنید: http://stackoverflow.com/questions/3631370/list-assets-in-a-subdirectory-using-assetmanager-list اگه جواب بده کارتون رو جلو میبره.

rubiks.kde
چهارشنبه 24 اردیبهشت 1393, 10:34 صبح
من میخام بصورت یک آلبوم نشون بدم ، یعنی عکسها پشت سر هم بیان.
منظور من اینه معمولا اسم فایلهارو یکسان میکنن و فقط اندیس آخر فایل رو تغییر میدن که بشه با یک حلقه به همه فایلها دسترسی داشت
اما فایلهای من اسمهای متفاوتی داره
چطوری میتونم به همشون دسترسی داشته باشم؟ بدون اینکه بخام تک تک بهشون اشاره کنم

عکس ها توی برنامه است یا روی کارت حافظه؟



تا جایی که من تجربه دارم، نتونستم یک آیدی رو با استرینگ بسازم


این کار نمیشه چون string رو نمیشه به id تبدیل کرد که ولی میشه از روش زیر بهتر عمل کرد ، با استفاده از

public int getIdentifier (String name, String defType, String defPackage)

که تابعی از کلاس Resources است میشه اسم فایل رو بهش داد و اون id رو برای شما برگردونه.

name : اسم عکس و هرچیز دیگر در داخل res برنامه
defType : محل مورد نظر برای جست و جو مثلا drawable یا anim یا menu ....
defPackage :اسم پکیج برنامه است.

من قبلا ازش استفاده کردم و هیچ مشکلی هم نداره.

با استفاده از این میتونید اسم تمام عکسها و ... رو به صورت string داشته باشی و بعد id رو بدست بیاری

حالا همون مثال خودت به این صورت میشه :
int id = YourActivity.this.getResources().getIdentifier("picName", "drawable", YourActivity.this.getPackageName());

اگه id مساوی 0 باشه یعنی پیدا نشده.

reza_azizi2010
چهارشنبه 24 اردیبهشت 1393, 19:02 عصر
عکس ها توی برنامه است یا روی کارت حافظه؟



این کار نمیشه چون string رو نمیشه به id تبدیل کرد که ولی میشه از روش زیر بهتر عمل کرد ، با استفاده از

public int getIdentifier (String name, String defType, String defPackage)

که تابعی از کلاس Resources است میشه اسم فایل رو بهش داد و اون id رو برای شما برگردونه.

name : اسم عکس و هرچیز دیگر در داخل res برنامه
defType : محل مورد نظر برای جست و جو مثلا drawable یا anim یا menu ....
defPackage :اسم پکیج برنامه است.

من قبلا ازش استفاده کردم و هیچ مشکلی هم نداره.

با استفاده از این میتونید اسم تمام عکسها و ... رو به صورت string داشته باشی و بعد id رو بدست بیاری

حالا همون مثال خودت به این صورت میشه :
int id = YourActivity.this.getResources().getIdentifier("picName", "drawable", YourActivity.this.getPackageName());

اگه id مساوی 0 باشه یعنی پیدا نشده.
این واسه بدست آوردن recource id درست کار میکنه، اما قبلش باید اسم عکس رو داشته باشیم.

من چندین عکس دارم که توی خود برنامه ذخیره شده. باز هم به دلایلی نمیتونم اسم عکسهارو یکسان کنم! اگه بخام میشه تک تک عکس هارو آدرس دهی کنم ولی چون تعداد عکسها زیاده ، خیلی زمانبره و بهینه هم نیست.
من میخام یه راه حل باشه که مثلا بهش بگیم کل عکسهای یک پوشه رو انتخاب کن.حالا اسمشون هرچی میخاد باشه

rubiks.kde
چهارشنبه 24 اردیبهشت 1393, 20:13 عصر
این واسه بدست آوردن recource id درست کار میکنه، اما قبلش باید اسم عکس رو داشته باشیم.

من چندین عکس دارم که توی خود برنامه ذخیره شده. باز هم به دلایلی نمیتونم اسم عکسهارو یکسان کنم! اگه بخام میشه تک تک عکس هارو آدرس دهی کنم ولی چون تعداد عکسها زیاده ، خیلی زمانبره و بهینه هم نیست.
من میخام یه راه حل باشه که مثلا بهش بگیم کل عکسهای یک پوشه رو انتخاب کن.حالا اسمشون هرچی میخاد باشه

سوال اول منو جواب ندادی؟عکسها کجاست؟توی کدوم پوشه است

reza_azizi2010
چهارشنبه 24 اردیبهشت 1393, 22:22 عصر
تو خود برنامه
تو پوشه drawble

rubiks.kde
چهارشنبه 24 اردیبهشت 1393, 23:28 عصر
تو خود برنامه
تو پوشه drawble

من با این کد لیست عکس های drawable رو در میارم

private void getDrawableResources() {

final R.drawable drawableResources = new R.drawable();
final Class<R.drawable> drawableClass = R.drawable.class;
final Field[] fields = drawableClass.getDeclaredFields();
final List<Integer> resourceIdList = new ArrayList<Integer>();


for (int i = 0, max = fields.length; i < max; i++) {
final int resourceId;
try {
resourceId = fields[i].getInt(drawableResources);
resourceIdList.add(resourceId);
}
catch (Exception e) {
continue;
}
}


Resources resources = this.getResources();
for (int i = 0; i < resourceIdList.size(); i++) {
Drawable drawable = resources.getDrawable(resourceIdList.get(i));
Log.i(resourceIdList.get(i) + " ): " , drawable.toString());
}
}