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

نام تاپیک: مشکل مقایسه عکس در دیتابیس

  1. #1

    مشکل مقایسه عکس در دیتابیس

    سلام.
    من یه دیتابیس دارم که داخل یکی از تیبل هاش یه فیلد از نوع image دارم.
    مشکلی در ذخیره و بازیابی عکس در دیتابیس رو ندارم.
    ولی هنگام سرچ یه عکس خاص به مشکل بر میخورم. من میخوام هنگام insert کردن عکس جدید سرچ کنم که اگه اون عکس موجود بود از همون عکس قبلی که در دیتابیس هست استفاده کنم و عکس تکراری ثبت نکنم.
    یه تابع در sql نوشتم به این صورت:

    create FUNCTION Test(@a image)
    RETURNS TABLE
    AS
    RETURN
    (
    SELECT * FRom Pictures
    WHERE Pic = @a
    );

    اما به WHERE Pic = @a گیر میده و تابع ساخته نمیشه. ظاهرا امکان استفاده از تایپ image در مقایسه وجود نداره.
    حالا چه راهی پیشنهاد میکنید؟

  2. #2

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


    CREATE FUNCTION Test(@a image)
    RETURNS TABLE AS
    RETURN SELECT *
    FROM Pictures
    WHERE DATALENGTH(Pic) = DATALENGTH(@a)


  3. #3
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

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

    نقل قول نوشته شده توسط Payman62 مشاهده تاپیک
    سلام.
    من یه دیتابیس دارم که داخل یکی از تیبل هاش یه فیلد از نوع image دارم.
    مشکلی در ذخیره و بازیابی عکس در دیتابیس رو ندارم.
    ولی هنگام سرچ یه عکس خاص به مشکل بر میخورم. من میخوام هنگام insert کردن عکس جدید سرچ کنم که اگه اون عکس موجود بود از همون عکس قبلی که در دیتابیس هست استفاده کنم و عکس تکراری ثبت نکنم.
    یه تابع در sql نوشتم به این صورت:

    create FUNCTION Test(@a image)
    RETURNS TABLE
    AS
    RETURN
    (
    SELECT * FRom Pictures
    WHERE Pic = @a
    );

    اما به WHERE Pic = @a گیر میده و تابع ساخته نمیشه. ظاهرا امکان استفاده از تایپ image در مقایسه وجود نداره.
    حالا چه راهی پیشنهاد میکنید؟
    سلام
    جستجوی یک عکس براساس محتوا یا طول فایل آن کار منطقی نیست (چون چند عکس متفاوت میتوانند طول یکسان داشته باشندو ... ) شما باید از عکس پارامترهای دیگری را ذخیره و با آن عکس را بازیابی کنید مثل شماره آرشیو / تاریخ / نام فایل / یک Hash از فایل / ... بنظرم
    علت استفاده را اعلام کنید تا همفکری شود

  4. #4

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

    سلام.
    خلاصش اینه که در تیبل تعدادی عکس ذخیره میشه. اما نمیخوام تکراری ذخیره بشه که db سنگین شه.

    ظاهرا راه حل استاندارد برای این مشکل وجود نداره و برای مقایسه عکس باید از روش های دیگه استفاده کرد.
    روش طول عکس که منطقی نیست به نظرم. چون امکان خطا داره به هر حال.

    میدونید که اطلاعات عکس ها به صورت آرایه ای از بایت سلکت میشن. ابتدای برنامم کل عکس ها سلکت میشن تو یه دیتاست. توسط یه تابع دونه دونه عکس ها رو از حالت بایت به عکس تبدیل کردم و با عکس جدید مقایسه کردم. اما در مواردی که دو عکس یکی بودن هم حاصل مقایسه فالس بود.
    البته این روش کمی هم کند هست چون باید اطلاعات هر عکس که آرایه هست تبدیل شه به عکس و در تعداد بالا وقت میگیره.

    فکر میکنم روش hash کردن عکس ها روش مناسبی باشه. بسیار سریع تر و راحت تر جواب میده. یعنی یه فیلد برای هش عکس ها قرار بدم.
    طول hash با روش md5 حداکثر 32 کاراکتر هست دیگه؟ میخوام طول فیلد رو char(32) بذارم.

    روش دیگه ای هم اگه مد نظرتون هست مطرح کنید تا استفاده کنیم.
    آخرین ویرایش به وسیله Payman62 : یک شنبه 25 بهمن 1388 در 23:50 عصر

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

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