PDA

View Full Version : تبدیل تصویر به رشته و برعکس



dup_azad
جمعه 08 تیر 1386, 10:13 صبح
با سلام
می خواستم تصویر را در batabase ذخیره کنم ولی چون حجم تصاویر زیاد هستش حجم DB بیش از حد زیاد میشه .اگر دوستان اطلاعاتی در مورد تبدیل تصویر به رشته و برعکس دارن تا بتونم تصاویر رو به صورت رشته ذخیره کنم یا اگر راه بهتری به نظرتون میرسه ممنون میشم راهنمایی کنید .

ghabil
جمعه 08 تیر 1386, 12:11 عصر
1) خب حجمش زیاد بشه به هر حال این اطلاعات رو باید یکجایی ذخیره کنی دیگه ، کوچیکترش هم که نمیشه کرد (اگر عکسهات به فرمت مناسبی هستند)

2)تصویر رو به رشته که نمیشه تبدیل کرد ، اطلاعات تصویر به شکل باینری هست ، که همین اطلاعات باینری توسط یک رندرر تبدیل به عکس میشند ، و حجمشون هم همون حجمیه که وقتی پراپرتیز عکس رو نگاه میکنی میبینی.

باز هم اگر اصرار داری عکس رو در دیتابیس نزاری میتونی عکسها رو توی یک آدرس خارج دیتابیس ذخیره کنی ، بعد آدرس عکس رو توی دیتابیس نگه داری...

SYNDROME
جمعه 08 تیر 1386, 14:24 عصر
با سلام

با سلام
می خواستم تصویر را در batabase ذخیره کنم ولی چون حجم تصاویر زیاد هستش حجم DB بیش از حد زیاد میشه .اگر دوستان اطلاعاتی در مورد تبدیل تصویر به رشته و برعکس دارن تا بتونم تصاویر رو به صورت رشته ذخیره کنم یا اگر راه بهتری به نظرتون میرسه ممنون میشم راهنمایی کنید .
چرا زیاد می شود.از فرمت Jpg استفاده کن که حجم آنها تقریبا 20 KB است.

1)
باز هم اگر اصرار داری عکس رو در دیتابیس نزاری میتونی عکسها رو توی یک آدرس خارج دیتابیس ذخیره کنی ، بعد آدرس عکس رو توی دیتابیس نگه داری...
با اجازه داش علیرضا.(پسر گل)
درست است این روش است ولی آینده جالبی در انتظار شما نیست چون ممکن است مسیر فایل عوض شود آن وقت:گیج:
بهترین روش همان است که فایل را در DataBase با پسوند Jpg ذخیره کنید و به طور مثال اجازه نده فایل باظرفیت بیشتر از 20 KB را ذخیره کنند.(آن وقت کاربر باید فقط سایز عکس را کوچک کند.

ghabil
جمعه 08 تیر 1386, 14:40 عصر
با سلام

چرا زیاد می شود.از فرمت Jpg استفاده کن که حجم آنها تقریبا 20 KB است.
.

فرمت عکس چه ربطی به سایزش داره !!!
ببین مثلا فرمت JPG یا PNG با استفاده از سریهای فوریه دیتا عکس رو به مپی میبرند که دیتا رو خیلی کوچیکتر میکنه ، اما اولا مقداری از دیتا گم میشه و دوما هم مقدار زیادی برای نمایششون به پروسس نیاز هست ؛ حالا اگر عکس 100 مگ باشه مثلا میکنندش 30 مگ و اگر 1 مگ باشه میکنندش 50 کیوبایت ، تاز اینها هم کاتملا به شرایط تصویر بستگی دارند . فرمتهای دیگه ای هم هستند که مثل Zip کار میکنند و فقط از ااگوریتمهای فشرده سازی استفاده میکنند .
خلاصه که حرف تو مثل این میمونه که بگی فایلهای Zip همشون 1 مگ هستند !!!



با اجازه داش علیرضا.(پسر گل)
درست است این روش است ولی آینده جالبی در انتظار شما نیست چون ممکن است مسیر فایل عوض شود آن وقت:گیج:
بهترین روش همان است که فایل را در DataBase با پسوند Jpg ذخیره کنید و به طور مثال اجازه نده فایل باظرفیت بیشتر از 20 KB را ذخیره کنند.(آن وقت کاربر باید فقط سایز عکس را کوچک کند.

مثلا وقتی برای یک شرکت طراحی و نقشه کشی برنامه نویسی میکنی اجازه ندی عکس بالای 20k ذخیره کنند ؟! اونم در حالیکه هر نقششون که به تمام جزییاتش هم نیاز دارند ممکنه چند صد مگ باشه ؟!

ضمنا هر دو روش ذخیره عکس در دیتابیس و خارج اون درست هستند و مزایا و معایب خودشون رو دارند که قبلا همینجا بخث شده . در حالت ذخیره در خارج از دیتابیس هم فایلها در یک فلدر که آدرس Reletive? با برنامه دارند ذخیره میشوند ، نه سر جای خودشون !! که بعدا جاشون عوض بشه.

SYNDROME
جمعه 08 تیر 1386, 15:59 عصر
با سلام


فرمت عکس چه ربطی به سایزش داره !!!

شما یک عکس Bmp را به یک عکس jpg با Paintخود ویندوز تغییر دهید.
من یکی را همین الان تغییر دادم و کیفیت و سایز عکس هیچ تغییری نکرد و لی ظرفیت 1.54 مگابایت به 22 کیلوبایت کم شد.
پس ربط داره.


مثلا وقتی برای یک شرکت طراحی و نقشه کشی برنامه نویسی میکنی اجازه ندی عکس بالای 20k ذخیره کنند ؟! اونم در حالیکه هر نقششون که به تمام جزییاتش هم نیاز دارند ممکنه چند صد مگ باشه ؟!

در این حالت درسته باید عکس را با هر ظرفیت نگه داشت ولی فرمت آن خیلی اهمیت دارد.با یک تبدیل ساده شما می تواند ظرفیت آن را خیلی خیلی کم کنید.
ولی منظور من از 20 kb برای هر برنامه ای نبود و فقط یک مثال برای کنترل بود.
شما اگر یک بر نامه پرسنلی بنویسید عکس شما نیاز ندارد از 20kb بیشتر شود.
ولی باز هم می گویم بستگی به برنامه دارد.



ضمنا هر دو روش ذخیره عکس در دیتابیس و خارج اون درست هستند و مزایا و معایب خودشون رو دارند که قبلا همینجا بخث شده . در حالت ذخیره در خارج از دیتابیس هم فایلها در یک فلدر که آدرس Reletive? با برنامه دارند ذخیره میشوند ، نه سر جای خودشون !! که بعدا جاشون عوض بشه.
ولی همان آدرس اگر بر روس سرور باشد یا عوض شدن IP یا نام سرور به هم می ریزد و یا یک نفر به راحتی می تواند فایل را پاک کند.
ما باید استثناء ها را نیز در نظر بگیریم و در بعضی از جاها حرف شما کاملاً درست است.
موفق باشید

vcldeveloper
شنبه 09 تیر 1386, 08:32 صبح
شما یک عکس Bmp را به یک عکس jpg با Paintخود ویندوز تغییر دهید.
من یکی را همین الان تغییر دادم و کیفیت و سایز عکس هیچ تغییری نکرد و لی ظرفیت 1.54 مگابایت به 22 کیلوبایت کم شد.
پس ربط داره.تغییر فرمت یک عکس به JPG مسلما موجب تغییر کیفیت عکس می شود، حتی اگر شما متوجه آن نشوید! توجه داشته باشید که خودتون سر خود نمی تونید کیفیت عکس کاربر را با استفاده از JPG کاهش بدید.

ولی همان آدرس اگر بر روس سرور باشد یا عوض شدن IP یا نام سرور به هم می ریزد و یا یک نفر به راحتی می تواند فایل را پاک کند.اینکه کدامیک از این روش ها مناسب تر هست، بستگی به شرایط پروژه شما داره، اما موردی که شما مطرح کردید در اینجا جایگاه نداره. اگر آدرس سرور تغییر کنه، شما از بانک اطلاعاتی هم استفاده کنید، داده ها قابل دسترس نخواهند بود، از طرفی در صورت نیاز به ذخیره داده ها بصورت فایل، لازم نیست کاربر مستقیما به این فایل ها دسترسی داشته باشه، بلکه میشه از یک Application Server به عنوان رابط بین Clients و بانک استفاده کرد.

dup_azad
شنبه 09 تیر 1386, 13:27 عصر
ممنون از راهنمایی تون ولی من بعد از اینکه عکسارو JPG می کنم بازم حجمشون زیاده حدودا 300 تا 500 کیلو بایت .اگر دوستان راه دیگه ای به ذهنشون میرسه ممنون میشم راهنماییم کنید

Arman_1367
شنبه 09 تیر 1386, 13:41 عصر
اگر منظوت اینه که کاربر نتواند خارج از برنامه از اطلاعات استفاده کند یک استریم تعریف کن بعد با الگریتم خاص مقدار بیت ها را دست کاری کن بعد با توجه به نام بانک و ... نامی را انتخاب کن و بعد تصاویر را در یک فایل بریز چون به هر حال اگر تعداد فیلدها زیاد بشه ممکنه بعداً کار سخت می شه و مدیریت این برنامه ....

SYNDROME
شنبه 09 تیر 1386, 15:47 عصر
با سلام

تغییر فرمت یک عکس به JPG مسلما موجب تغییر کیفیت عکس می شود، حتی اگر شما متوجه آن نشوید! توجه داشته باشید که خودتون سر خود نمی تونید کیفیت عکس کاربر را با استفاده از JPG کاهش بدید.

ولی قرار نیست ما سر خود این کار را بکنم ولی اگر بخواهیم عکس را با فرمت BMP و با آن ظرفیت بالا ذخیره کنیم بانک ما خیلی سنگین می شود.


اینکه کدامیک از این روش ها مناسب تر هست، بستگی به شرایط پروژه شما داره، اما موردی که شما مطرح کردید در اینجا جایگاه نداره. اگر آدرس سرور تغییر کنه، شما از بانک اطلاعاتی هم استفاده کنید، داده ها قابل دسترس نخواهند بود، از طرفی در صورت نیاز به ذخیره داده ها بصورت فایل، لازم نیست کاربر مستقیما به این فایل ها دسترسی داشته باشه، بلکه میشه از یک Application Server به عنوان رابط بین Clients و بانک استفاده کرد.
کمی دقت به نوشته من بکنید.


ولی باز هم می گویم بستگی به برنامه دارد.

با تشکر از علی کشاورز