نمایش نتایج 1 تا 28 از 28

نام تاپیک: مراحل ایجاد گالری عکس داینامیک

  1. #1
    کاربر دائمی
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    180

    مراحل ایجاد گالری عکس داینامیک

    سلام .
    اگه ممکنه در مورد مراحل ایجاد یک گالری داینامیک و نحوه ی درست کردن اون منوراهنمایی کنید.
    ممنون

  2. #2

    نقل قول: مراحل ایجاد گالری عکس داینامیک

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

  3. #3

    نقل قول: مراحل ایجاد گالری عکس داینامیک


  4. #4

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    نقل قول نوشته شده توسط #Faranak مشاهده تاپیک
    سلام .
    اگه ممکنه در مورد مراحل ایجاد یک گالری داینامیک و نحوه ی درست کردن اون منوراهنمایی کنید.
    ممنون
    سلام ،

    اين شد يك سوال خوب و يك تاپيك خوب

    شما بايد ماهيگري ياد بگيريد و نه اينكه تقاضاي ماهي بكنيد ، از اونجايي كه شما مراحل اينكار رو خواستيد ، من سعي ميكنم مراحل ايجاد اون رو به صورت خيلي ساده بيان كنم .

    از اونجايي كه اين گالري ميخواهيد دايناميك باشد ، پس مدير سايت بايد قابليت ايجاد گالري ، آپلود عكس ، حذف و ويرايش گالري و همچنين ويرايش و حذف عكسها و توضيحات عكسها رو داشته باشد . در غير اينصورت اين گالري استاتيك خواهد بود .

    شما ميتونيد از ديتابيس ، فايل XML يا .. كمك بگيريد ، كه من در اينجا از ديتابيس كمك ميگيرم ، بعد گه گالري ما ديناميك شد ميتونيم از هر پلاگين زيبايي جي كوئري كه خواستيم استفاده كنيم ، تا اون رو زيبا كنيم .

    اولين قدم ايجاد ديتابيس هست : ما به 2 جدول نياز خواهيم داشت : يكي جدول گالري و ديگري جدول عكسها

    جدول گالري ما از فيلدهاي :GalleryId, Name, Description, ImageAddress تشكيل شده ، كه ما در اينجا تصميم ميگريم كه آدرس عكس رو به صورت رشته در فيلد ImageAddress اين جدول ذخيره كنيم .
    فيلد GalleryId كليد ما از نوع Identity و Auto Increment هست ، پس موقع درج نيازي نيست ما عددي بابت اين درج كنيم .
    جدول Image ما از فيلد هاي ImageId, GalleryId, ImageAddress, Description تشكيل شده ، كه ImageId شناسه و كليد ما از نوع Identity Auto Increment هست .

    در اين جدول GalleryId كليد خارجي ماست به جدول Gallery ما ، ما هميشه عكسها رو به يك گالري مشخص نسبت ميديم ، چون ما ميخواهيم به كاربر اين قابليت رو بديم كه عكسهاي يك گالري مشخصي رو مشاهد كنه و نه همه عكسها رو ، و همچنين فيلدي براي آدرس عكس و فيلدي براي توضيحات عكس ( كاربر بايد بدونه كه اين عكس چيست ) كه البته NULLABE يعني اختياري .

    اجازه بديد اسكريپيت اين جداول رو ببينيم :

    جدول گالري :

    USE [SampleGallery]
    GO
    /****** Object: Table [dbo].[Gallery] Script Date: 06/11/2010 20:49:02 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[Gallery](
    [GalleryId] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](50) COLLATE Arabic_CI_AS NOT NULL,
    [Description] [nvarchar](10) COLLATE Arabic_CI_AS NOT NULL,
    [ImageAddress] [nvarchar](200) COLLATE Arabic_CI_AS NULL,
    CONSTRAINT [PK_Gallery] PRIMARY KEY CLUSTERED
    (
    [GalleryId] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]

    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'شناسه گالري' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Gallery', @level2type=N'COLUMN',@level2name=N'GalleryId'
    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'نام گالري' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Gallery', @level2type=N'COLUMN',@level2name=N'Name'
    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'توضيحي كوتاه در مورد گالري ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Gallery', @level2type=N'COLUMN',@level2name=N'Description'
    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'آدرس عكسي كه كه بيانگر گالري هست ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Gallery', @level2type=N'COLUMN',@level2name=N'ImageAddress'
    و همچنين جدول Image

    USE [SampleGallery]
    GO
    /****** Object: Table [dbo].[Image] Script Date: 06/11/2010 20:49:56 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[Image](
    [ImageId] [int] IDENTITY(1,1) NOT NULL,
    [GalleryId] [int] NOT NULL,
    [ImageAddress] [nvarchar](200) COLLATE Arabic_CI_AS NOT NULL,
    [Description] [nvarchar](100) COLLATE Arabic_CI_AS NULL,
    CONSTRAINT [PK_Image] PRIMARY KEY CLUSTERED
    (
    [ImageId] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]

    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'شناسه عكس ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Image', @level2type=N'COLUMN',@level2name=N'ImageId'
    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'شناسه گالري ( مربوط به كدام گالري است )' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Image', @level2type=N'COLUMN',@level2name=N'GalleryId'
    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'آدرس عكس به صورت رشته اي ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Image', @level2type=N'COLUMN',@level2name=N'ImageAddress'
    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'توضيحات عكس ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Image', @level2type=N'COLUMN',@level2name=N'Description'
    GO
    ALTER TABLE [dbo].[Image] WITH CHECK ADD CONSTRAINT [FK_Image_Gallery] FOREIGN KEY([GalleryId])
    REFERENCES [dbo].[Gallery] ([GalleryId])
    GO
    ALTER TABLE [dbo].[Image] CHECK CONSTRAINT [FK_Image_Gallery]
    براي اينكه يك ديد بصري از ديتابيس داشته باشيد به اين تصوير نگاه كنيد :


    حال كه ديتابيس رو ساختيم ميريم به مراحل بعدي ...

    // در عكس ، فيلد Description بايد از نوع Nvarchar(100) باشد كه اشتباها 10 خورده
    عکس های ضمیمه عکس های ضمیمه
    آخرین ویرایش به وسیله Mostafa_Dindar : جمعه 21 خرداد 1389 در 23:41 عصر دلیل: اصلاح نگارش

  5. #5

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    مرحله بعدي ساخت فرم درج و ويرايش گالري هست

    خوب اول از همه يك فرم ميسازيم ( در جايي كه كاربر ادمين يا مدير دسترسي دارد ) و البته بايد ديگر مسائل امنيتي رو رعايت كنيم ، مثلا آيا كسي كه ميخواهد گالري را ايجاد كند مجوز ايجاد ، ويرايش و يا حتي حذف آن را دارد يا خير ؟ اين بستگي به ديد شماي برنامه نويس و همچنين پروژه شما دارد

    براي اين فرم ما به چند تكست باكس براي نام گالري ، توضيحات گالري ( اختياري) و همچنين يك كنترل FileUpload نياز داريم .

    در در طراحي ديتايبس ، فرض را بر اين گرفيتم كه توضيحات گالري اختياري هست ، پس اين نكته رو هم اينجا فراموش نميكنيم .

    براي نام گالري يك TextBox ساده ، براي توضيحات گالري به يك TextBox كه Mode آن به صورت MultiLine هست ، يا از يك WYSIWYG استفاده ميكنيم . انتخابهاي خوب و ساده براي WYSIWYG ميتونه FckEditor يا FreeTextBox باشد .

    در اين فرم ما بايد قابليت ايجاد گالري ، ويرايش و حذف گالري رو داشته باشيم ، از اونجايي كه كار خاصي نيست ، و احتمالا شما كه برنامه نويس ASP.NET هستيد ، اون رو كاملا ياد داريد ، از توضيحات بيشتر صرف نظر ميكنيم . چون اگر بخوم مراحل كار رو عينا توضيح بدم ، خيلي طولاني خواهد شد .

    مرحله بعدي ساختن فرم درج عكس هست :


    اين فرم هم مثل فرم قبلي است با اين تفاوت كه اول از همه ما بايد از يك DropDownList كه نام گالري ها رو نشان ميدهد داشته باشيم ، مدير ، يا هر كاربر ديگري كه عكسها رو درج ميكنيد ، با انتخاب گالري مربوطه از DropDownList مشخص ميكند كه عكس مربوط به كدام گالري هست .
    تنها نكته اي كه ميماند ، كاربر بايد يك عكس درج كند و شما از روي آن 2 عدد عكس ايجاد كنيد : يكي عكس كوچك Thumbnails و ديگري عكس بزرگ با كيفيت بالا .

    از اونجايي كه ما اينجا مراحل رو ميگيم ، از حوصله بحث خارج هست كه نحوه ايجاد يك Thumnails رو شرح بديم ، شما ميتونيد از اين Sample كمك بگيريد ، نحوه ايجاد اون رو فرا بگيريد .

    آدرس عكس بزرگ رو در ديتابيس دخيره ميكنيم
    حال كه ما فرم درج و ويرايش و حذف گالري و عكس رو فراگرفتيم ، بايد فرمي براي نمايش به كاربر ايجاد كنيم .

    مرحله بعدي ايجاد صفحه اي براي نمايش به كاربر هست

    خوب ما بايد يك فرم Master - Details درست كنيم ، راههاي بسيار براي اين كار هست ، اگر به هيچ وجه با اين كار آشنا نيستيد اين كليد واژه رو جستجو كنيد .

    خوب ما ميتونيم از يك GridView براي نمايش Gallery ها در فرم Master استفاده كنيم كه يك فيلد از نوع ItemTemplate دارد و ما ميتونيم هر جور كه دلمون خواست اون رو طراح كنيم

    ولي نكته اي رو بايد مد نظر داشته باشيم ، بايد فيلدي در اين GridView داشته باشيم كه بتونيم شناسه گالري رو به صورت پارامتر ( معمولا Query String) به يك صفحه ديگر منتقل كنيم .

    و در فرم Details ميتونيم از يك كنترل داده مثل DataList استفاده كنيم ، عكس Thumnails رو اونجا همراه با توضيحات نمايش بديم .

    حال وقتي كاربر بر روي Thumbnails كليك كرد عكس بزرگ نمايش داده بشه .

    مراحل اين قسمت خيلي كلي توضيح داده شد ، و تصور بر اين بود كه خواننده با موارد فوق آشنا هست ، پس اگر نكته اي ابهام هست ، مطرح كنيد تا پاسخ بدم .

    مرحله بعدي ايجاد افكت بر روي عكس

    اگر مراحل بعدي رو انجام داده باشيد ، بايد يك گالري عكس درست كرده باشيد ، ولي اگر از جي كوئري استفاده كنيد ، ميتونيد افكت هاي بسيار زيبايي رو روي اون اعمال كنيد ،

    اگر به هيچ وجه با جي كوئري آشنايي نداريد اينجا رو مطالعه بفرمائيد ، ميتونيم از پلاگين هاي بسيار زيادي كه در اينترنت هست استفاده كنيم ، Manual اونها رو مطالعه كنيم و بر روي گالري خودمون اعمال كنيم .

    سوالات مربوط به جي كوئري رو هم در تالار مربوط به خوش بپرسيد .


    سربلند باشيد

  6. #6
    کاربر دائمی آواتار hamedsabzian
    تاریخ عضویت
    آذر 1386
    محل زندگی
    بروجرد
    پست
    314

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    و در فرم Details ميتونيم از يك كنترل داده مثل DataList استفاده كنيم ، عكس Thumnails رو اونجا همراه با توضيحات نمايش بديم .
    چرا در فرم Details از DataList استفاده می کنید؟ مگه یه رکورد بیشتر می خواید نمایش بدید؟ نکنه منظورتون DetailsView هست؟

  7. #7
    اگه وقتشو داشتین میشه یه نمونه بزارین ممنون میشم

  8. #8

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    نقل قول نوشته شده توسط hamedsabzian مشاهده تاپیک
    چرا در فرم Details از DataList استفاده می کنید؟ مگه یه رکورد بیشتر می خواید نمایش بدید؟ نکنه منظورتون DetailsView هست؟

    در فرم Details ما ميخواهيم همه عكسهاي مربوط به يك گالري رو نشون بديم ، پر واضح هست كه تعداد عكسهاي يك گالري ميتونه 0 تا تعداد زيادي عكس باشه .

    در صورتي كه كنترل DetailsView در هر لحظه قادر به نمايش يك عكس هست . پس ما بايد از كنترل هاي داده اي مثل FormView و DetailsView كه در هر لحظه تنها يك كنترل رو نمايش ميدهند استفاده نكنيم .

    ميتونيم كنترلهايي مثل Gridview ,Repeater , DataList ,ListView كه در هر لحظه چندين ركورد رو نمايش ميدهند استفاده كنيم كه ListView و DataList انتخابهاي بهتري هستند .

    نقل قول نوشته شده توسط titrajh مشاهده تاپیک
    اگه وقتشو داشتین میشه یه نمونه بزارین ممنون میشم
    شما مراحل رو دنبال كنيد ، هر جاشو كه گير كرديد در ميون بزاريد ، من به شما كمك خواهم كرد .


    سربلند باشيد
    آخرین ویرایش به وسیله Mostafa_Dindar : جمعه 21 خرداد 1389 در 22:55 عصر

  9. #9
    کاربر دائمی آواتار hamedsabzian
    تاریخ عضویت
    آذر 1386
    محل زندگی
    بروجرد
    پست
    314

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    متوجه شدم!
    با اجازتون یه نمونه خیلی ساده از Upload و Resize و دستکاری کیفیت و نمایش به صورت Thumbnail گذاشتم.
    https://barnamenevis.org/attach...5&d=1276261249
    البته توی این کد هدف ساخت گالری نبوده.
    امیدوارم مفید باشه!

  10. #10
    کاربر دائمی
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    180

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    نقل قول نوشته شده توسط Lastphoenix مشاهده تاپیک
    مرحله بعدي ساخت فرم درج و ويرايش گالري هست

    خوب اول از همه يك فرم ميسازيم ( در جايي كه كاربر ادمين يا مدير دسترسي دارد ) و البته بايد ديگر مسائل امنيتي رو رعايت كنيم ، مثلا آيا كسي كه ميخواهد گالري را ايجاد كند مجوز ايجاد ، ويرايش و يا حتي حذف آن را دارد يا خير ؟ اين بستگي به ديد شماي برنامه نويس و همچنين پروژه شما دارد

    براي اين فرم ما به چند تكست باكس براي نام گالري ، توضيحات گالري ( اختياري) و همچنين يك كنترل FileUpload نياز داريم .

    در در طراحي ديتايبس ، فرض را بر اين گرفيتم كه توضيحات گالري اختياري هست ، پس اين نكته رو هم اينجا فراموش نميكنيم .

    براي نام گالري يك TextBox ساده ، براي توضيحات گالري به يك TextBox كه Mode آن به صورت MultiLine هست ، يا از يك WYSIWYG استفاده ميكنيم . انتخابهاي خوب و ساده براي WYSIWYG ميتونه FckEditor يا FreeTextBox باشد .

    در اين فرم ما بايد قابليت ايجاد گالري ، ويرايش و حذف گالري رو داشته باشيم ، از اونجايي كه كار خاصي نيست ، و احتمالا شما كه برنامه نويس ASP.NET هستيد ، اون رو كاملا ياد داريد ، از توضيحات بيشتر صرف نظر ميكنيم . چون اگر بخوم مراحل كار رو عينا توضيح بدم ، خيلي طولاني خواهد شد .

    مرحله بعدي ساختن فرم درج عكس هست :


    اين فرم هم مثل فرم قبلي است با اين تفاوت كه اول از همه ما بايد از يك DropDownList كه نام گالري ها رو نشان ميدهد داشته باشيم ، مدير ، يا هر كاربر ديگري كه عكسها رو درج ميكنيد ، با انتخاب گالري مربوطه از DropDownList مشخص ميكند كه عكس مربوط به كدام گالري هست .
    تنها نكته اي كه ميماند ، كاربر بايد يك عكس درج كند و شما از روي آن 2 عدد عكس ايجاد كنيد : يكي عكس كوچك Thumbnails و ديگري عكس بزرگ با كيفيت بالا .

    از اونجايي كه ما اينجا مراحل رو ميگيم ، از حوصله بحث خارج هست كه نحوه ايجاد يك Thumnails رو شرح بديم ، شما ميتونيد از اين Sample كمك بگيريد ، نحوه ايجاد اون رو فرا بگيريد .

    آدرس عكس بزرگ رو در ديتابيس دخيره ميكنيم
    حال كه ما فرم درج و ويرايش و حذف گالري و عكس رو فراگرفتيم ، بايد فرمي براي نمايش به كاربر ايجاد كنيم .

    مرحله بعدي ايجاد صفحه اي براي نمايش به كاربر هست

    خوب ما بايد يك فرم Master - Details درست كنيم ، راههاي بسيار براي اين كار هست ، اگر به هيچ وجه با اين كار آشنا نيستيد اين كليد واژه رو جستجو كنيد .

    خوب ما ميتونيم از يك GridView براي نمايش Gallery ها در فرم Master استفاده كنيم كه يك فيلد از نوع ItemTemplate دارد و ما ميتونيم هر جور كه دلمون خواست اون رو طراح كنيم

    ولي نكته اي رو بايد مد نظر داشته باشيم ، بايد فيلدي در اين GridView داشته باشيم كه بتونيم شناسه گالري رو به صورت پارامتر ( معمولا Query String) به يك صفحه ديگر منتقل كنيم .

    و در فرم Details ميتونيم از يك كنترل داده مثل DataList استفاده كنيم ، عكس Thumnails رو اونجا همراه با توضيحات نمايش بديم .

    حال وقتي كاربر بر روي Thumbnails كليك كرد عكس بزرگ نمايش داده بشه .

    مراحل اين قسمت خيلي كلي توضيح داده شد ، و تصور بر اين بود كه خواننده با موارد فوق آشنا هست ، پس اگر نكته اي ابهام هست ، مطرح كنيد تا پاسخ بدم .

    مرحله بعدي ايجاد افكت بر روي عكس

    اگر مراحل بعدي رو انجام داده باشيد ، بايد يك گالري عكس درست كرده باشيد ، ولي اگر از جي كوئري استفاده كنيد ، ميتونيد افكت هاي بسيار زيبايي رو روي اون اعمال كنيد ،

    اگر به هيچ وجه با جي كوئري آشنايي نداريد اينجا رو مطالعه بفرمائيد ، ميتونيم از پلاگين هاي بسيار زيادي كه در اينترنت هست استفاده كنيم ، Manual اونها رو مطالعه كنيم و بر روي گالري خودمون اعمال كنيم .

    سوالات مربوط به جي كوئري رو هم در تالار مربوط به خوش بپرسيد .


    سربلند باشيد
    ممنون از راهنمایی خوبتون .
    فرم 1 رو ساختم یک folderبه نام myphoto درست کردم مسیر عکس رو در دیتابیس به این صورت ذخیره کردم :
    C:\Inetpub\wwwroot\WebSite7\MyPhoto\fileuplod1.fil ename

    درسته یا این جوری ذخیره کنم:(البته filenameرو به دست می آرم بعد اون نام رو در دیتابیس می ریزم)
    MyPhoto\fileuplod1.filename\~

    درمورد فرم master-detailهم این جوریه که یک فرم بذارم روش یک گرید بذارم بعد این گرید مشخصات گالریهارو داشته باشه یعنی جدول dbo.galleryمنبع اون باشه و یک فیلد اضافه که templateاست و داخل اون لینک قرار گرفته که این لینک شامل gallery idاست.باکلیک روی هر لینک صفحه ای که redirectمی کنم عکس ها ی داخل اون گالری که انتخاب شده رو نشون می ده.فقط من با datalistکارنکردم .لینک زیرتنظیمات اون رو نشون
    آیا من هم باید به این صورت تنظیمات رو انجام بدم؟
    درضمن می خواستم بدونم وقتی datalistبه دیتابیس وصل میشه و باتوجه به این که ما در دیتابیس آدرس عکس بزرگ رو ذخیره کردیم چه جوری thumbnailشده ها رو نشون می ده؟می شه در این مورد بیشتر توضیح بدید.
    (من برای ذخیره عکس ها بعداز uploadدوتا پوشه ساختم تو یکیش عکس های بزرگ نگهداری میشه و در یکیش thumbnailشده ها.)
    ممنون
    آخرین ویرایش به وسیله #Faranak : شنبه 22 خرداد 1389 در 02:26 صبح

  11. #11
    کاربر تازه وارد آواتار mosi123
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    شیراز-در یک جای خوش آب و هوا با مردمی خوب
    پست
    51

    نقل قول: مراحل ایجاد گالری عکس داینامیک

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

  12. #12

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    فرم 1 رو ساختم یک folderبه نام myphoto درست کردم مسیر عکس رو در دیتابیس به این صورت ذخیره کردم :
    C:\Inetpub\wwwroot\WebSite7\MyPhoto\fileuplod1.fil ename

    درسته یا این جوری ذخیره کنم:(البته filenameرو به دست می آرم بعد اون نام رو در دیتابیس می ریزم)
    MyPhoto\fileuplod1.filename\~
    مسير به صورت نسبي كه با ~ ( به ريشه سايت اشاره ميكند ) شروع ميشود + اسم فلدر + اسم فايل رو ذخيره كنيد .


    درمورد فرم master-detailهم این جوریه که یک فرم بذارم روش یک گرید بذارم بعد این گرید مشخصات گالریهارو داشته باشه یعنی جدول dbo.galleryمنبع اون باشه و یک فیلد اضافه که templateاست و داخل اون لینک قرار گرفته که این لینک شامل gallery idاست.باکلیک روی هر لینک صفحه ای که redirectمی کنم عکس ها ی داخل اون گالری که انتخاب شده رو نشون می ده
    همينطور هست كه شما ميفرمائيد .

    .فقط من با datalistکارنکردم .لینک زیرتنظیمات اون رو نشون
    آیا من هم باید به این صورت تنظیمات رو انجام بدم؟
    روش كار يكسان هست ، ولي لزوما تنها به آن روش نيست .

    درضمن می خواستم بدونم وقتی datalistبه دیتابیس وصل میشه و باتوجه به این که ما در دیتابیس آدرس عکس بزرگ رو ذخیره کردیم چه جوری thumbnailشده ها رو نشون می ده؟می شه در این مورد بیشتر توضیح بدید.
    كاملا صحيح ميفرمائيد ، همانطور كه قبلا گفتم ، ما آدرس عكس بزرگ رو در ديتابيس ذخيره ، ميكنم ، ولي هنگام درج عكس ، 2 نسخه از عكس ايجاد ميكنيم . يكي بزرگ و ديگري كوچكتر .
    خوب بهتره عكس كوچكتر با همنام با عكس كوچكتر باشد ولي با كمي تفاوت ، مثلا يك th (Thumbnails مخفف ( به انتهاي فايل اضافه كنيم .

    به عنوان نمونه فرض كنيد عكسي با نام Image1.jpg در مسير ~/Images ذخيره ميكنيد . پس آدرس عكس اصلي ميشود :
    ~/ImageFolder/Image1.jpg
    كه در ديتابيس ذخيره ميكنيم ، و يك عكس كوچكتر با همان نام ولي كمي متفاوت
    ~/ImageFolder/Image1_th.jpg
    حال موقع آدرس دهي به عكس ( وقتي كه ميخواهيد عكس كوچك رو نشون دهيد ) با استفاده از يك متد كمكي آدرس عكسي رو كه از ديتابيس خونده ميشه رو كمي دستكاري كرده و تبديل به آدرس عكس كوچك كرده و عكس كوچك رو نمايش ميديم . مثلا يك متد ميتواند شبيه به اين باشد :

        public string getThumbsAddress(object picAddress)
    {
    if (picAddress != null && picAddress != DBNull.Value)
    {
    string thumb = Convert.ToString(picAddress);
    int lengh = thumb.Length;
    string extention = thumb.Substring(lengh - 4);
    string fileName = thumb.Remove(lengh - 4);
    thumb = fileName + "_th" + extention;
    return thumb;
    }
    return null;
    }


    من برای ذخیره عکس ها بعداز uploadدوتا پوشه ساختم تو یکیش عکس های بزرگ نگهداری میشه و در یکیش thumbnailشده ها.)
    الان كه به نقل قول قبلي پاسخ دادم به اين خط شما رسيدم .

    فرقي ندارد ، باز هم شما نياز به يك متد كمي بگيريد و تبديل رو انجام بديد .

    موفق باشيد
    آخرین ویرایش به وسیله Mostafa_Dindar : شنبه 22 خرداد 1389 در 04:43 صبح

  13. #13
    کاربر دائمی آواتار hamedsabzian
    تاریخ عضویت
    آذر 1386
    محل زندگی
    بروجرد
    پست
    314

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    توی نمونه برنامه ای که گذاشتم، می تونستید توسط همچین کدی:
    <asp:Image runat="server" ID="Image1" ImageUrl="~/MakeThumbnail.aspx?x=120&y=100&file=~/Image/Sample.jpg" />

    عکس رو به هر اندازه ای که بخواید در بیارید و نمایش بدید. توی Grid یا هر جای دیگه ای هم جواب میده.
    آیا باز هم نیاز به ذخیره کردن عکس های Thumbnail شده هست؟

  14. #14

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    نقل قول نوشته شده توسط hamedsabzian مشاهده تاپیک
    توی نمونه برنامه ای که گذاشتم، می تونستید توسط همچین کدی:
    <asp:Image runat="server" ID="Image1" ImageUrl="~/MakeThumbnail.aspx?x=120&y=100&file=~/Image/Sample.jpg" />
    عکس رو به هر اندازه ای که بخواید در بیارید و نمایش بدید. توی Grid یا هر جای دیگه ای هم جواب میده.
    آیا باز هم نیاز به ذخیره کردن عکس های Thumbnail شده هست؟
    دوست عزيز ،

    صحبت در پست قبلي اين بود كه ، حالا كه آدرس عكس بزرگ رو در ديتابيس ذخيره كرده ايم ، ( و آدرس عكس كوچك رو ذخيره نكرده ايم ) چطور آدرس عكس كوچك رو بدست بياوريم .

    متدي كه شما نوشته بوديد هم جالب بود ، منتهي يك مشكل اساسي دارد ، وقتي عكس كوچك ايجاد ميكنيد Aspect Ratio رو رعايت نميكند ( نسبت طول به عرض) . كاربر كه نميداند نسبت طول و عرض عكس قبلي چند به چند است ، پس شما بايد خودتون اين كار رو هندل كنيد ،

    در اين متد اين كار انجام ميشود ، توضيح به خواننده واگذار ميشود :

        protected void btnInsert_Click(object sender, EventArgs e)
    {
    if (Page.IsValid && FileUpload1.HasFile)
    {
    if (HttpContext.Current.User.IsInRole("Guest"))
    Response.Redirect("~/Admin/Default.aspx?Action=Not");

    Pic p = new Pic();
    GetFromData(p);
    try
    {
    System.Drawing.Image image = System.Drawing.Image.FromStream(FileUpload1.Posted File.InputStream);

    string fileName = Path.Combine(Server.MapPath("~/UploadFolder/PicGalleryFolder"), FileUpload1.FileName);
    if (File.Exists(fileName))
    File.Delete(fileName);
    image.Save(fileName);

    float imgWidth = image.PhysicalDimension.Width;
    float imgHeight = image.PhysicalDimension.Height;
    float imgSize = imgHeight > imgWidth ? imgHeight : imgWidth;
    float imgResize = imgSize <= 128 ? (float)1.0 : 128 / imgSize;
    imgWidth *= imgResize; imgHeight *= imgResize;
    System.Drawing.Image thumb = image.GetThumbnailImage((int)imgWidth, (int)imgHeight, delegate() { return false; }, (IntPtr)0);

    fileName = Path.Combine(
    Server.MapPath("~/UploadFolder/PicGalleryFolder"),
    string.Format("{0}_th{1}",
    Path.GetFileNameWithoutExtension(FileUpload1.FileN ame),
    Path.GetExtension(FileUpload1.FileName)
    )
    );
    if (File.Exists(fileName))
    File.Delete(fileName);

    thumb.Save(fileName);

    p.PicAddress = "~/UploadFolder/PicGalleryFolder/" + FileUpload1.FileName;


    int i = PicManager.Insert(p);
    if (i > 1)
    {
    lblStatus.Text = "عكس با موفقيت درج شد ";
    // ClearForm();
    btnUpdate.Enabled = false;
    btnInsert.Enabled = true;
    FileUpload1.Enabled = true;
    }
    }
    catch (Exception ex)
    {
    ErrorHandler.WriteError(ex.Message);
    lblStatus.Text = "بروز خطا در درج عكس";

    }
    }
    }
    public string getThumbsAddress(object picAddress)
    {
    if (picAddress != null && picAddress != DBNull.Value)
    {
    string thumb = Convert.ToString(picAddress);
    int lengh = thumb.Length;
    string extention = thumb.Substring(lengh - 4);
    string fileName = thumb.Remove(lengh - 4);
    thumb = fileName + "_th" + extention;
    return thumb;
    }
    return null;
    }


    //هيچ تضميني نيست كد بهينه باشد ، از اون براي ايده گرفتن استفاده كنيد
    موفق باشيد

  15. #15
    کاربر دائمی آواتار hamedsabzian
    تاریخ عضویت
    آذر 1386
    محل زندگی
    بروجرد
    پست
    314

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    ممنون از توجهتون!
    خوب با این تفاسیر اگه من به جای x و y یک عدد از جنس float و مثبت به MakeThumbnail پاس بدم و اونجا طول و عرض عکس رو در اون عدد ضرب کنم و نمایش بدم مشکل حل خواهد شد.
    (اگه عدد کوچکتر از 1 باشه عکس به نسبت طول و عرضش کوچک میشه و اگه بزرگتر باشه هم بزرگ)
    درسته؟
    آخرین ویرایش به وسیله hamedsabzian : شنبه 22 خرداد 1389 در 05:34 صبح

  16. #16
    کاربر دائمی آواتار imanasp
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    قطعه ای از بهشت
    پست
    364

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    نقل قول نوشته شده توسط Lastphoenix مشاهده تاپیک
    آدرس عكس بزرگ رو در ديتابيس دخيره ميكنيم
    با تشکر از شما که داشته هاتون رو به دیگران نیز منتقل می کنید من sample شما رو دنبال کردم شما اون جا دیتابیس نداشتید و عکس ها رو بعد از ورود از کاربر در پوشه upload دخیره کردید سوالم اینه که چطوری باید آدرس عکس بزرگ رو در دیتابیس ذخیره کرد میشه همون sample رو کامل کنید (با افکت jquery)
    من تو این مورد خیلی مشکل دارم برای همین درخواست تکمیل اون sample رو دارم(بیشتر قسمت ذخیره آدرس عکس بزرگ و زمان نمایش تصویر کوچک برای کاربر)
    ممنون

  17. #17

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    نقل قول نوشته شده توسط imanasp مشاهده تاپیک
    من sample شما رو دنبال کردم شما اون جا دیتابیس نداشتید و عکس ها رو بعد از ورود از کاربر در پوشه upload دخیره کردید سوالم اینه که چطوری باید آدرس عکس بزرگ رو در دیتابیس ذخیره کرد میشه همون sample رو کامل کنید
    ممنون
    نخير ، من ديتابيس دارم ، و علاوه بر ذخيره عكس بزرگ و Thumbnail از اون در هارد ديسك سرور ، آدرس عكس بزرگ رو هم در ديتابيس ذخيره ميكنم .

    من ابتدا يك Object از نوع Pic ايجاد كردم ( يك كلاس به نام Pic نوشتم )
    Pic p = new Pic();

    سپس Property هاي اون Object رو توسط يك متد بنام GetFormData كه داده هاي فرم روميگيرد انتصاب دادم، ولي بدنه متد رو اينجا نگذاشتم ، تصور كردم كه ديگر خيلي بديهي هست .
    GetFromData(p);


    و در داخل بلاگ Try -Catch مقدار يكي ديگر از پراپرتي ها اون آبجكت Pic رو مقدار دهي كردم
    p.PicAddress = "~/UploadFolder/PicGalleryFolder/" + FileUpload1.FileName;

    و در نهايت اون آبجكت از نوع Pic رو در ديتابيس درج كردم
    PicManager.Insert(p);


    من تو این مورد خیلی مشکل دارم برای همین درخواست تکمیل اون sample رو دارم(بیشتر قسمت ذخیره آدرس عکس بزرگ و زمان نمایش تصویر کوچک برای کاربر)
    قسمت اول رو كه الان توضيح دادم ، در مورد مشكل دوم شما من متوجه نميشم ، كجاي اون مشكل داريد ، واضحتر بگيد تا كمكتون كنم .


    سربلند باشيد

  18. #18
    کاربر دائمی آواتار imanasp
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    قطعه ای از بهشت
    پست
    364

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    نقل قول نوشته شده توسط Lastphoenix مشاهده تاپیک
    نخير ، من ديتابيس دارم ، و علاوه بر ذخيره عكس بزرگ و Thumbnail از اون در هارد ديسك سرور ، آدرس عكس بزرگ رو هم در ديتابيس ذخيره ميكنم .
    منظورم sample بود که برای نمونه گذاشتید در اون sample بانک نساختید. در مثال شما تا اینجا پیش رفتید که بعد از گرفتن عکس از کاربر اون رو به دو عکس تبدیل کردین و در پوشه آپلود گذاشتین ولی آدرس عکس بزرگ رو در بانک وارد نکردین

    من ابتدا يك Object از نوع Pic ايجاد كردم ( يك كلاس به نام Pic نوشتم )
    ببخشید ولی توضیحات شما اون قسمتی که کلاس رو ساختید متوجه نمیشم اون کلاس pic رو میشه بیشتر توضیح بدین با کد (ببینید دنبال این نیستم که سریع برام کد بذارید اما چون این اولین پروژه کار با عکس توی ASP.NET میخام که تا جایی که ممکنه با کد واسم توضیح بدین)

    قسمت اول رو كه الان توضيح دادم ، در مورد مشكل دوم شما من متوجه نميشم ، كجاي اون مشكل داريد ، واضحتر بگيد تا كمكتون كنم .
    شما میگید که کاربر مثلا روی گریدویو گالری کلیک میکنه و انتقال داده میشه به یک صفحه ای که قراره تصویر کوچک نمایش داده بشه و با کلیک بر روی این تصویر عکس بزرگ نشون داده بشه تا اینجا مشکلی نیست اما اون متد کمکی که اشاره کردین رو کجا باید فراخوانی کنم؟

    در نهایت فکر می کنم اگه لطف کنید و همون sample رو کامل کنید خیلی بهم کمک کردین

    ممنون

  19. #19

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    نقل قول نوشته شده توسط imanasp مشاهده تاپیک
    منظورم sample بود که برای نمونه گذاشتید در اون sample بانک نساختید. در مثال شما تا اینجا پیش رفتید که بعد از گرفتن عکس از کاربر اون رو به دو عکس تبدیل کردین و در پوشه آپلود گذاشتین ولی آدرس عکس بزرگ رو در بانک وارد نکردین
    آها ! حرفتون درسته ، ولي توجه كنيد كه من گفتم از اون Sample براي آپلود عكس استفاده كنيد ، و در پست 15 ، متد كامل شده رو گذاشتم .

    ببخشید ولی توضیحات شما اون قسمتی که کلاس رو ساختید متوجه نمیشم اون کلاس pic رو میشه بیشتر توضیح بدین با کد (ببینید دنبال این نیستم که سریع برام کد بذارید اما چون این اولین پروژه کار با عکس توی ASP.NET میخام که تا جایی که ممکنه با کد واسم توضیح بدین)
    خيلي ساده ، در واقع ساده تر از ساده ، يك كلاس كه چند تا Property متناطر با فيلدهاي جدول Image در ديتابيس داريم :

    public class Pic
    {
    public Pic()
    {
    //
    // TODO: Add constructor logic here
    //
    }

    public int ImageId { get; set; }
    public int GalleryId { get; set; }
    public string ImageAddress { get; set; }
    public string Description { get; set; }
    }


    شما میگید که کاربر مثلا روی گریدویو گالری کلیک میکنه و انتقال داده میشه به یک صفحه ای که قراره تصویر کوچک نمایش داده بشه و با کلیک بر روی این تصویر عکس بزرگ نشون داده بشه تا اینجا مشکلی نیست اما اون متد کمکی که اشاره کردین رو کجا باید فراخوانی کنم؟
    خيلي سادست ، در DataList فيلدتون رو تبديل به ItemTemplate كنيد ، حال به جاي اينكه اينطور بنويسيد :
    <img src='<%#Eval("PicAddress") %>'  />


    از متد كمكي getThumbsAddress استفاده كنيد ، و آدرس بزرگ را پاس دهيد و آدرس كوچك رو بگيريد :
    <img src='<%#getThumbsAddress (Eval("PicAddress")) %>'  />


    سربلند باشيد

  20. #20
    کاربر دائمی آواتار hamedsabzian
    تاریخ عضویت
    آذر 1386
    محل زندگی
    بروجرد
    پست
    314

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    بنده هنوز با ذخیره ی عکس های کوچک مخالفم! به نظرم بهتره اون ها رو هنگام استفاده ساخت و نمایش داد.
    مگه اینکه بگید پیچیده گی زمانی و I/O داره!

  21. #21
    کاربر دائمی آواتار imanasp
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    قطعه ای از بهشت
    پست
    364

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    آقای Lastphoenix میشه کلاس GetFromData رو هم بذارید میخام ببینم شما چطوری داده های روی فرمتون رو می گیرید و همین طور این خط
    int i = PicManager.Insert(p); چه کاری انجام میده

    و سوال آخر اینکه چطوری افکت JQuery رو اعمال کنم

  22. #22

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    نقل قول نوشته شده توسط imanasp مشاهده تاپیک
    آقای Lastphoenix میشه کلاس GetFromData رو هم بذارید میخام ببینم شما چطوری داده های روی فرمتون رو می گیرید و همین طور این خط
    int i = PicManager.Insert(p); چه کاری انجام میده

    و سوال آخر اینکه چطوری افکت JQuery رو اعمال کنم
    چرا اينقدر سخت به موضوع نگاه ميكنيد ؟

    به جاي اينكه متدم بزرگ بشه ، اون رو Refactor كردم ، و قسمت مربوط به انتساب داده هاي فرم به Pic Object رو در يك متد جداگانه نوشتم ،

    يعني يك متد شبيه به اين :
        private void GetFormData(Pic p)
    {
    if (ddlGallery.SelectedValue != "0")
    p.GalleryId = Convert.ToInt32(ddlGallery.SelectedValue);

    p.Description= txtDescription.Text.Trim();
    .
    .
    .
    .
    }

    همین طور این خط
    int i = PicManager.Insert(p);
    من متدهاي مخصوص به خودم رو دارم ، شما نياز نيست مثل من بنويسيد ، در هر صورت اين متد يك آبجكت از نوع Pic ميگيرد و در ديتابيس درج ميكند ، و درصورتي كه درج به درستي انجام شود مقدار يك برميگرداند .


    و سوال آخر اینکه چطوری افکت JQuery رو اعمال کنم
    هر پلاگين مستندات خودش رو دارد ، بايد بعد از انتخاب پلاگين به مستندات اون هم رجوع كنيد تا نحوه كار دستتون بياد .

    سربلند باشيد

  23. #23
    کاربر دائمی آواتار imanasp
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    قطعه ای از بهشت
    پست
    364

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    صفحه ای ساختم به نام images که قراره طبق راهنمایی های شما آدرس بزرگ رو توسط متد getThumbsAddress به کوچیک تبدیل کنه منم همه راه رو درست رفتم منتهی نمیدونم چرا زمان اجرای این متد خطا میگیره
    بدون اینکه وارد متد بشه درست کار میکنه عکس بزرگ رو نشون میده ولی وقتی متد رو فعال می کنم خطا میگیره
    اینم تصویر خطا
    عکس های ضمیمه عکس های ضمیمه
    آخرین ویرایش به وسیله imanasp : چهارشنبه 26 خرداد 1389 در 23:22 عصر

  24. #24

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    نقل قول نوشته شده توسط imanasp مشاهده تاپیک
    صفحه ای ساختم به نام images که قراره طبق راهنمایی های شما آدرس بزرگ رو توسط متد getThumbsAddress به کوچیک تبدیل کنه منم همه راه رو درست رفتم منتهی نمیدونم چرا زمان اجرای این متد خطا میگیره
    بدون اینکه وارد متد بشه درست کار میکنه عکس بزرگ رو نشون میده ولی وقتی متد رو فعال می کنم خطا میگیره
    اینم تصویر خطا
    چرا Query String رو به اون متد پاس دادین!؟ میخواستین چیکار بکنید ؟
    همیشه قدم به قدم پیش برید ,باید بدونید که میخواهید چیکار کنید , خوب اول از همه شما باید سعی کنید بتونید با استفاده از کنترل DataList عکسها رو که آدرس اون در دیتابیس هست نشون بدید , وقتی موفق به اینکار شدید ,بعد از متد getThumbsAddress کمک بگیرید و آدرس عکس کوچک رو جایگزین کنید .

    سربلند باشید

  25. #25

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    سلام
    ممنون از مثال جالب و كاربردي تون
    فقط يه مساله اينجا تو صحبت هاتون جا موند
    اونم اينكه بايد فايل هاي عكس رو ReName كنيم و بعد در فولدر مورد نظر ثبت كنيم
    چون اگر كسي بياد و فايلي با يه نام تكراري رو آپلود كنه،
    فايل همنام قبليش الكي الكي پاك ميشه

    شما اگه بخواين نام فايل رو عوض كنيد از Random Number استفاده ميكنيد؟
    پيشنهادتون چيه؟

  26. #26
    کاربر دائمی آواتار ERIKA
    تاریخ عضویت
    تیر 1388
    محل زندگی
    اصفهان
    پست
    171

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    سلام.
    امکانش هست که این داکیومنتی را که توضیح دادیدبه صورت یک سمپل قراردهید.
    با تشکر

  27. #27

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    آقا يه سؤال! حالا اگه بخوايم امكاني بديم كه كاربر ، بتونه با يكبار آپلود ، از 1 تا بينهايت عكس آپلود كنه چي؟ چون تو اين سيستم شما ، كاربر مجبوره اگه يه گالري 20 تا عكس داره ، 20 بار بياد و آپلود كنه!

  28. #28

    نقل قول: مراحل ایجاد گالری عکس داینامیک

    نقل قول نوشته شده توسط Mostafa_Dindar مشاهده تاپیک
    مرحله بعدي ساخت فرم درج و ويرايش گالري هست

    خوب اول از همه يك فرم ميسازيم ( در جايي كه كاربر ادمين يا مدير دسترسي دارد ) و البته بايد ديگر مسائل امنيتي رو رعايت كنيم ، مثلا آيا كسي كه ميخواهد گالري را ايجاد كند مجوز ايجاد ، ويرايش و يا حتي حذف آن را دارد يا خير ؟ اين بستگي به ديد شماي برنامه نويس و همچنين پروژه شما دارد

    براي اين فرم ما به چند تكست باكس براي نام گالري ، توضيحات گالري ( اختياري) و همچنين يك كنترل FileUpload نياز داريم .

    در در طراحي ديتايبس ، فرض را بر اين گرفيتم كه توضيحات گالري اختياري هست ، پس اين نكته رو هم اينجا فراموش نميكنيم .

    براي نام گالري يك TextBox ساده ، براي توضيحات گالري به يك TextBox كه Mode آن به صورت MultiLine هست ، يا از يك WYSIWYG استفاده ميكنيم . انتخابهاي خوب و ساده براي WYSIWYG ميتونه FckEditor يا FreeTextBox باشد .

    در اين فرم ما بايد قابليت ايجاد گالري ، ويرايش و حذف گالري رو داشته باشيم ، از اونجايي كه كار خاصي نيست ، و احتمالا شما كه برنامه نويس ASP.NET هستيد ، اون رو كاملا ياد داريد ، از توضيحات بيشتر صرف نظر ميكنيم . چون اگر بخوم مراحل كار رو عينا توضيح بدم ، خيلي طولاني خواهد شد .
    سربلند باشيد
    من برای نمایش عکسها مشکلی ندارم فقط یه طرح می خوام واسه ویرایش و حدف. میشه کمکم کنید...

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •