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

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

hosseinAmini  12 سال پیش  12 سال پیش
+4 0

سلام 

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

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

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

 برای این سوال 6 پاسخ وجود دارد.
پاسخ به سوال 
sadeghbarout  12 سال پیش
+3 0

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

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

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

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

سلام 

با تشکر از پاسخ 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();
    }
}
0 0
منظور ایشون اینه یه سری فایل که تعدادشون مشخص نیست توی سرور ذخیره شده حالا چطور تعداد این ها رو پیدا کنیم و از طریق json array بفرستیم :) (12 سال پیش)
0 0
دقیقا منظورم همینه که gavac گفت :) (12 سال پیش)
0 0
واقعا بابت پاسخ اشتباهی که دادم منو ببخشید :| دیروز مسافرت بودم و خیلی خسته شدم به خاطر همین یکم گیج میزنم :) (12 سال پیش)
0 0
خواهش می کنم، همین که پاسخ دادید،لطف کردید. (12 سال پیش)
پاسخ به سوال 
hosseinAmini  12 سال پیش
0 0

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 سال پیش
+3 0

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

 <?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);
?>
0 0
البنه قسمت دوم کد همون کد خودته که دلیلی نداره حتما به این شکل باشه.در هر حال برای شمارش فایلها از قسمت اول استفاده کن (12 سال پیش)
0 0
وااااای درست شد. واقعا دستت درد نکنه. فقط تو حلقه for یه تغییر خیلی کوچیک دادم تا کار کنه، کدش رو میزارم تا دوستان دیگه هم استفاده کنند. (12 سال پیش)
پاسخ به سوال 
hosseinAmini  12 سال پیش
+3 0

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

 <?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 سال پیش
+6 0

با عرض پوزش به خاطر جواب اشتباهی که دادم، اینم یه جواب بهینه و کارا برای خواندن اطلاعات (سمت سرور + 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 نوشتم،اگه جایی مشکل داشت ببخشید دیگه :)، البته این کد تست شده و جواب میده :)

موفق باشید

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

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