سلام.
من یه دیتابیس دارم که داخل یکی از تیبل هاش یه فیلد از نوع image دارم.
مشکلی در ذخیره و بازیابی عکس در دیتابیس رو ندارم.
ولی هنگام سرچ یه عکس خاص به مشکل بر میخورم. من میخوام هنگام insert کردن عکس جدید سرچ کنم که اگه اون عکس موجود بود از همون عکس قبلی که در دیتابیس هست استفاده کنم و عکس تکراری ثبت نکنم.
یه تابع در sql نوشتم به این صورت:
کد:
create FUNCTION Test(@a image)
RETURNS TABLE
AS
RETURN
(
SELECT * FRom Pictures
WHERE Pic = @a
);
اما به WHERE Pic = @a گیر میده و تابع ساخته نمیشه. ظاهرا امکان استفاده از تایپ image در مقایسه وجود نداره.
حالا چه راهی پیشنهاد میکنید؟
یه تابع بنویس که به هر عکس یه String یکتا نسبت بده!! مثلاً عکس ها رو به صورت Binary باز کن بعد Hash کن. می شه یه String با طول ثابت و البته یکتا!!! حالا توی اون Table که عکس هاتو توش ذخیره کردی، یه فیلد دیگه درست کن و Hash شده های عکس ها رو جلوشون بنویس. حالا وقتی می خوای عکس جدید Import کنی، Hashش کن بعد String حاصله رو با اون هایی که توی DB هست مقایسه کن!!!
سلام.
خوبی فرید جان ؟ گوشیتم که دیگه جواب نمیدی.
پس راه حل استاندارد برای این مشکل وجود نداره و برای مقایسه عکس باید از روش های دیگه استفاده کرد.
میدونید که اطلاعات عکس ها به صورت آرایه ای از بایت سلکت میشن. ابتدای برنامم کل عکس ها سلکت میشن تو یه دیتاست. توسط یه تابع دونه دونه عکس ها رو از حالت بایت به عکس تبدیل کردم و با عکس جدید مقایسه کردم. اما در مواردی که دو عکس یکی بودن هم حاصل مقایسه فالس بود.
البته این روش کمی هم کند هست چون باید اطلاعات هر عکس که آرایه هست تبدیل شه به عکس و در تعداد بالا وقت میگیره.
فکر میکنم روش hash کردن عکس ها روش مناسبی باشه. بسیار سریع تر و راحت تر جواب میده.
طول hash با روش md5 حداکثر 32 کاراکتر هست دیگه؟ میخوام طول فیلد رو char(32) بذارم.
(۲۶-بهمن-۱۳۸۸, ۰۰:۴۹:۲۱)Payman62 نوشته است: [ -> ]سلام.
خوبی فرید جان ؟ گوشیتم که دیگه جواب نمیدی.
سلام پیمان جان، ما مخلص شماییم. فکر کنم فقط یه بار زنگ زدی که من جواب ندادما!!! الان هم هر موقع زنگ بزنی من دربست در خدمتم!
(۲۶-بهمن-۱۳۸۸, ۰۰:۴۹:۲۱)Payman62 نوشته است: [ -> ]پس راه حل استاندارد برای این مشکل وجود نداره و برای مقایسه عکس باید از روش های دیگه استفاده کرد.
میدونید که اطلاعات عکس ها به صورت آرایه ای از بایت سلکت میشن. ابتدای برنامم کل عکس ها سلکت میشن تو یه دیتاست. توسط یه تابع دونه دونه عکس ها رو از حالت بایت به عکس تبدیل کردم و با عکس جدید مقایسه کردم. اما در مواردی که دو عکس یکی بودن هم حاصل مقایسه فالس بود.
البته این روش کمی هم کند هست چون باید اطلاعات هر عکس که آرایه هست تبدیل شه به عکس و در تعداد بالا وقت میگیره.
فکر میکنم روش hash کردن عکس ها روش مناسبی باشه. بسیار سریع تر و راحت تر جواب میده.
طول hash با روش md5 حداکثر 32 کاراکتر هست دیگه؟ میخوام طول فیلد رو char(32) بذارم.
راه حل استاندارد رو من ندیدم، ولی با اطمینان نمی تونم بگم که وجود نداره. واقعیتش من چیزی در موردش ندیدم. این راهی هم که گفتم، از خودم بود.
طول md5 هم 32 هستش!
سلام
من درخصوص ذخیره وبازیابی عکس توی اسکیو ال با وی بی 6 مشکل دارم.
بالا نوشته بودین که شما در این زمینه مشکلی ندارین.
امکانش هست نمونه سورسی برام بفرستین
ممنون میشم.