بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

نحوه ایجاد گالری تصویر؟

مدیریت گفتگو
hosseinAmini 12 سال پیش
آخرین تغییر: 12 سال پیش

سلام 

میخوام یه گالری تصویر بسازم که تصاویرش رو از سرور میگیره حالا کلی سوال برام پیش اومده که چندتاش اینان:

  1. برای ساخت گالری تصویری که ۳ ردیف داره بهتره از listview استفاده کنم یا gridview؟ اگر gridview بهتره بی زحمت نحوه استفاده از gridview رو توضیح بدید یا یه آموزش معرفی کنید
  2. برای ساخت گالری تصویر، حتما باید تصاویر در گوشی کاربر دانلود شن؟ یا روش دیگه ای هم هست؟
  3. در آموزش لیست ویو و تصاویر پرحجم آنلاین استاد در برنامه نویسی سمت سرور یه حلقه for  ایجاد کرد و تعداد دفعات تکراره اون رو برابر با تعداد تصاویر قرار داد، حالا می خوام بدونم که روشی هست که خود برنامه بفهمه تعداد تصاویر چندتا هست و حلقه رو به تعداد تصاویر تکرار کنه؟

بچه ها هر کدوم از سوالا رو بلد بودید بی زحمت توضیح بدید. نیازی نیست که حتما کامل باشه، هرچی بلد بودید بگید. یه سرنخ کوچیک هم دستم بیاد بسته. ممنون

نظرات

پاسخ‌ها 6

sadeghbarout 12 سال پیش

1- به نظر من   gridview . آموزش خاصی نداره. مثل همون لیست ویو یه آداپتر براش میسازی  و به گرید ویو معرفیش میکنی . همون اداپتر استادم توش جواب میده. چند وقت پیشم یکی از دوستان یه آموزشی در این باره گذاشته بودآموزش : استفاده از GridVeiw شخصی سازی شده

2- تا اونجایی که من میدونم چون میخوای توی یه کنترل ازش استفاده کنی (مثل gridview) آره حتما باید دانلود شن. ولی راه بهینه تر اینه که فقط یه thumbnail ازشون دانلود کنی و توی gridview نشون بدی بعد اگه کاربر کلیک کرد اصلش دانلود بشه

3- من خیلی php کار نکردم ولی مطمئنا راهی هست که بتونه تعداد فایل های یه دایرکتوری رو رو سرور حساب کنه .

نظرات

hosseinAmini 12 سال پیش
صادق ممنونم از توضیحی که دادی. در رابطه با سوال 2، اگر تصاویر باید دانلود شن پس از مدتی که تعداد تصاویر زیاد میشه، مثلا 400تا تصویر، باعث پر شدن حافظه دستگاه کاربر میشه. به نظرت خوبه که بعذ از هر خروج از برنامه کل تصاویر دانلود شده رو پاک کنیم؟ (این روش هم مشکل اینو داره که با هر دفعه وارد شدن در برنامه باید تصاویر از اول دانلود شن)
CreativeBoy 12 سال پیش

سلام 

با تشکر از پاسخ sadeghbarout

در رابطه با سوال 3 :

شما وقتی که نام و مسیر عکس ها رو به صورت JSON Array میفرستید به سمت client پس client هم میتونه توی این آرایه iterate کنه پس یعنی مشا میتونید برای شرط حلقه for بذارید تا زمانی که مثلا ()i < jsonArrayName.length پس از این به بعد هر چند تا عکس در سمت سرور داشته باشید از سمت client نگرانی ندارید، چون دارید یه آرایه به سمت client میفرستید و client فقط توش iterate میکنه.

اینم کد واسه مثال:

String result = WebService.readUrl("http://192.168.1.6/file-server/service.php", null);
if (result != null) {
    try {
        G.images.clear();
        JSONArray tasks = new JSONArray(result);
        for (int i = 0; i < tasks.length(); i++) {/*********/
            JSONObject object = tasks.getJSONObject(i);
            StructureImage image = new StructureImage();
            image.title = object.getString("title");
            image.url = object.getString("url");
            image.tumbnail = object.getString("tumbnail");

            G.images.add(image);
        }
        adapter.notifyDataSetChanged();
    }
    catch (JSONException e) {
        e.printStackTrace();
    }
}

نظرات

javac 12 سال پیش
منظور ایشون اینه یه سری فایل که تعدادشون مشخص نیست توی سرور ذخیره شده حالا چطور تعداد این ها رو پیدا کنیم و از طریق json array بفرستیم :)
hosseinAmini 12 سال پیش
دقیقا منظورم همینه که gavac گفت :)
CreativeBoy 12 سال پیش
واقعا بابت پاسخ اشتباهی که دادم منو ببخشید :| دیروز مسافرت بودم و خیلی خسته شدم به خاطر همین یکم گیج میزنم :)
hosseinAmini 12 سال پیش
خواهش می کنم، همین که پاسخ دادید،لطف کردید.
hosseinAmini 12 سال پیش

silencewolf ممنون که جواب دادی.
پاسخ شما کاملا صحیح هست ولی من می خوام سمت سرور بفهمم که چندتا تصویر در دایرکتوری هست. در مثال استاد حدودا 15تا تصویر در پوشه images بود و چون بتونه آدرس این تصاویر را به client ارسال کنه، یه حلقه ایجاد کرد که 15 مرتبه تکرار می شد. حالا این روش برا وقتی که بخوای هر چند وقت به تعداد تصاویرت اضافه کنی اصلا خوب نیست چون هر دفعه باید به صورت دستی کدهای php رو تغییر بدی. حالا میخوام کاری کنم که خود php بفهمه چندتا تصویر در دایرکتوری وجود داره و حلقه for رو به تعداد تصاویر تکرار کنه.
کدهای استاد به این شکل بود:

 <?php
$images = array();
for($i=1 ; $i <=15 ; $i++){
    $image = array();
    $image["title"] = "image" . $i;
    $image["src"] = "Thumbnails/image-". $i .".jpg";
    $images[] = $image;
}

echo json_encode($images);

نظرات

EloMan 12 سال پیش

این کد رو تست کن.

 <?php 
    
    $count = 0; 
    $dir = 'images/';
    if ($handle = opendir($dir)) {
        while (($file = readdir($handle)) !== false){
            if (!in_array($file, array('.', '..')) && !is_dir($dir.$file)) 
                $count++;
        }
    }
    
    // echo "Files=  ".$count;

    $images = array();
    for($i=1 ; $count ; $i++){
	$image = array();
	$image["title"] = "image" . $i;
	$image["src"] = "Thumbnails/image-". $i .".jpg";
	$images[] = $image;
    }

	echo json_encode($images);
?>

نظرات

EloMan 12 سال پیش
البنه قسمت دوم کد همون کد خودته که دلیلی نداره حتما به این شکل باشه.در هر حال برای شمارش فایلها از قسمت اول استفاده کن
hosseinAmini 12 سال پیش
وااااای درست شد. واقعا دستت درد نکنه. فقط تو حلقه for یه تغییر خیلی کوچیک دادم تا کار کنه، کدش رو میزارم تا دوستان دیگه هم استفاده کنند.
hosseinAmini 12 سال پیش

کد بدست آوردن تعداد فایل ها در یک دایرکتوری سمت سرور:

 <?php

    $count;
    $dir = 'Thumbnails/';
    if ($handle = opendir($dir)) {
        while (($file = readdir($handle)) !== false){
            if (!in_array($file, array('.', '..')) && !is_dir($dir.$file))
                $count++;
        }

    }
    $images = array();
    for($i=1 ; $i <= $count ; $i++){
        $image = array();
        $image["title"] = "image" . $i;
        $image["src"] = "Thumbnails/image-". $i .".jpg";
        $images[] = $image;
    }
echo "<pre>";
print_r($images);
echo "</pre>";
    echo json_encode($images);

 

 

نظرات

CreativeBoy 12 سال پیش

با عرض پوزش به خاطر جواب اشتباهی که دادم، اینم یه جواب بهینه و کارا برای خواندن اطلاعات (سمت سرور + php)

$dir   = 'images/';
$files = scandir($dir);
echo count($files);/*اگه بخواید که فقط تعداد فایل ها رو بدست بیارید فقط تا همینجا کافیه */

/* ادامه کد برای این هست کد فقط فایل های مورد نیازمون رو از توی دایرکتوری بگیریم */

$count = 0;
$image_files = array(); for($i=0; $i<count($files);$i++){ $path_parts = pathinfo($dir . $files[$i]); if($path_parts['extension'] == "jpg"){ $image_files[] = $files[$i];
$count++; } }
echo $count; /*این خط تعداد فایل هایی که فرمت عکس دارن رو نشون میده */
print_r($image_files);/*این خط فقط جهت تست کردنه و فراموش نکنید که باید حذفش کنید :)*/ echo json_encode($image_files);

یه توضیح مختصر درباره کد:

$dir : توی این متغیر آدرس یه دایرکتوری رو میریزیم

scandir() : این دستور یه آرایه از تمام عناصر توی دایرکتوری برمیگردونه 

count() : تعداد عناصر آرایه رو بر میگردونه

pathinfo() : اطلاعاتی درباره دایرکتوری به ما میده 

['extension'] : اینم که از اسمش معلومه، فرمت فایل رو بهمون میده 

if : $image_files اینجا یه شرط میذاریم که فقط اونایی که عکس هستن ریخته بشن توی

این اولین باریه که کد php نوشتم،اگه جایی مشکل داشت ببخشید دیگه :)، البته این کد تست شده و جواب میده :)

موفق باشید

نظرات

hosseinAmini 12 سال پیش
خواهش می کنم، این کدی که دادید خیلی عالیه، به خصوص اینکه خودش نام تصاویر رو بدست میاره و میشه برای پسوند خاصی جست و جو کرد. تنهامشکلی که داره اینه که تعداد تصاویر در دایرکتوری رو دوتا زیاد نشون میده یعنی اگه 3تا عکس در دایرکتوری باشه می گه 5تاس. هر کاری می کنم درست نمیشه :( ممنونم از پاسخ خوبت
CreativeBoy 12 سال پیش
ممنون که خبر دادی، من یکم بی دقتی کردم، اون دو تایی که اضافه تر نشون میده به خاطر دو تا فایل به اسم های . و .. هست، که اون count اول این فایل ها رو هم حساب میکنه و تعداد رو نشون میده در اصل count اولی کاری به فرمت فایل ها نداره و تعداد همه فایل ها رو بر میگردونه. --- پاسخ تصحیح شد ----
sadeghbarout 12 سال پیش
مرسی بابت پاسخت . دنبال همچین کدی بودم ;)
CreativeBoy 12 سال پیش
خواهش، گوارای وجودِ برنامه های سمت سِرورت :))

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