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

نام تاپیک: ذخيره عكس در بانك !!!

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

    ذخيره عكس در بانك !!!

    با سلام.
    از مديران بخش به خاطر ايجاد تاپيك تكراري معضرت ميخوام ولي هر چي با كليد واژه Blobو... گشتم به نتيجه نرسيدم.
    سوالم اين بود كه چطوري ميشه خودعكس رو توي SQL ذخيره كنم ؟
    به شكل آدرس ذخيره كردم ولي جايي كه برنامه قراره كار كنه احتمال پاك شدن فايل زياده !!و اينكه حداكثر تعداد اعضا حدودا" 300 نفر هستش.
    ممنون.

  2. #2
    کاربر دائمی آواتار Batman
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    ناكجاآباد
    پست
    887

    Wink نقل قول: ذخيره عكس در بانك !!!

    نقل قول نوشته شده توسط acilios مشاهده تاپیک
    با سلام.
    از مديران بخش به خاطر ايجاد تاپيك تكراري معضرت ميخوام ولي هر چي با كليد واژه Blobو... گشتم به نتيجه نرسيدم.
    سوالم اين بود كه چطوري ميشه خودعكس رو توي SQL ذخيره كنم ؟
    به شكل آدرس ذخيره كردم ولي جايي كه برنامه قراره كار كنه احتمال پاك شدن فايل زياده !!و اينكه حداكثر تعداد اعضا حدودا" 300 نفر هستش.
    ممنون.
    Information.Close;
    Information.SQL.Clear;
    Information.SQL.Add('insert into information(pic) Values(:pic)');
    Information.Parameters.ParamByName('pic').LoadFrom File(Form2.OpenPictureDialog1.FileName,ftBlob);

    موفق باشید

  3. #3
    کاربر دائمی آواتار shervin farzin
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مشهد - shervinfarzin@gmail.com
    پست
    256

    نقل قول: ذخيره عكس در بانك !!!

    سلام
    https://barnamenevis.org/showthread.php?t=124596
    موفق باشيد.

  4. #4
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    همدان
    پست
    131

    نقل قول: ذخيره عكس در بانك !!!

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

    Information.ExecSQL;


    پيروز و سربلند باشيد.

  5. #5
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    همدان
    پست
    131

    نقل قول: ذخيره عكس در بانك !!!

    سلامی دوباره.
    یه مشکل تازه !!
    وقتی کد زیر رو برای ثبت اجرا میکنم خطای "ADOquery Cannot Perform This Opration On a Closed Dataset"
    میده.

    Information.Close;
    Information.SQL.Clear;
    Information.SQL.Add('insert into users(code,pic) Values(:code,:pic)');
    Information.Parameters.ParamByName('code').Value:= edit1.text;
    Information.Parameters.ParamByName('pic').LoadFrom File(Form1.OpenPictureDialog1.FileName,ftBlob);
    Information.ExecSQL;


    مشکل از کجاست ؟
    اگه میشه کد بالا رو به شکل AdoTable بدین چون من تا حالا ثبت با کوئری کار نکردم و با خطاهاش آشنا نیستم.
    موفق باشید.

  6. #6
    کاربر دائمی آواتار Modernidea
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    »مشهد الرضا«
    پست
    573

    نقل قول: ذخيره عكس در بانك !!!

    نقل قول نوشته شده توسط acilios مشاهده تاپیک
    سلامی دوباره.
    یه مشکل تازه !!
    وقتی کد زیر رو برای ثبت اجرا میکنم خطای "ADOquery Cannot Perform This Opration On a Closed Dataset"
    میده.

    Information.Close;
    Information.SQL.Clear;
    Information.SQL.Add('insert into users(code,pic) Values(:code,:pic)');
    Information.Parameters.ParamByName('code').Value:= edit1.text;
    Information.Parameters.ParamByName('pic').LoadFrom File(Form1.OpenPictureDialog1.FileName,ftBlob);
    Information.ExecSQL;


    مشکل از کجاست ؟
    اگه میشه کد بالا رو به شکل AdoTable بدین چون من تا حالا ثبت با کوئری کار نکردم و با خطاهاش آشنا نیستم.
    موفق باشید.
    سلام

    شما بايد بعد از اين دستور :
    Information.SQL.Add('insert into users(code,pic) Values(:code,:pic)');

    ديتابيس را بايد در حالت ويرايش يا درج قرار بدي.

    خسته نباشيد.

  7. #7
    کاربر دائمی آواتار babak_delphi
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    آستارا
    پست
    634

    نقل قول: ذخيره عكس در بانك !!!

    تا جایی که من میدونم مقدار فیلد blob رو اینطور وارد نمیکنند
    روش زیر را امتحان کنید :

    var
    Stream: TStream;
    buf : TMemoryStream;
    begin
    Stream := ADOQuery.CreateBlobStream(ADOQuery.fieldbyname('My Field'), bmRead);
    Stream.Seek(0,0);
    buf:=TMemoryStream.Create;
    Buf.CopyFrom(Stream,Stream.Size);
    buf.SaveToFile('c:\Temp.bmp');
    Stream.Free;
    buf.Free;
    end;

  8. #8
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    همدان
    پست
    131

    نقل قول: ذخيره عكس در بانك !!!

    با سلام و تشکر از شما دوستان.
    من همون کدهای قبلی رو توی یه پروژه دیگه کپی(!!!) کردم و بدون هیچ اخطاری اجرا و ذخیره شد هنوز هم نمیدونم اون پیغام خطا برای چی بود !
    آقای babak_delphi من برای ذخیره عکس ها از روشی که بالا درج شده استفاده کردم و تا حالا هم مشکل خاصی نداشته به نظر شما روش مشکل داریه ؟
    روشی که شما درج کردین چه مزیتی نسبت به روش من داره ؟
    آیا روش خوبی(کارا) برای کم کردن حجم عکسی که ذخیره میکنم هست یه نه ؟ اگر بله لطفا" راهنمایی کنید.
    باز هم از پاسخ دوستان ممنون.

  9. #9
    کاربر دائمی آواتار shervin farzin
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مشهد - shervinfarzin@gmail.com
    پست
    256

    نقل قول: ذخيره عكس در بانك !!!

    سلام
    كدي كه در پست 2 ، Batman عزيز نوشتن درست مثل كدي كه آقاي Babak_Delphi نوشتن.
    البته كدي كه آقاي Babak_Delphi نوشتن براي خوندن عكس از Database هست نه نوشتنش .
    به هر حال هر دوست گرامي از نوع داده Blob استفاده كردن .
    آیا روش خوبی(کارا) برای کم کردن حجم عکسی که ذخیره میکنم هست یه نه
    هيچ كدوم از اين روشها ربطي به فشرده سازي Stream ورودي نداره . اگه قصد كم كردن حجم داده
    ورودي رو داريد بايد از الگوريتمهاي فشرده سازي براي Stream استفاده كنيد .
    هنوز هم نمیدونم اون پیغام خطا برای چی بود !
    علت خطا اين بود كه زمان ساختن فيلد Blob ، همونطور كه در خط زير :
    Information.Parameters.ParamByName('pic').LoadFrom  File(Form1.OpenPictureDialog1.FileName,ftBlob);

    از كد شما نوشته شده ، بايد الگوي فيلد رو از Dataset ميخونده ، در حالي كه Dataset در اون
    لحظه يا خالي بوده يا شامل فيلدهايي بوده كه هيچ كدوم الگوي Blob رو نداشتن .
    اگر هنوز اين خطا رو داريد كافيه قبل كد Insert ، يك select انجام بديد به نحوي كه در خروجي
    اين select حتما فيلدي كه عكس رو قرار ذخيره كنه وجود داشته باشه .
    موفق باشيد.

  10. #10
    کاربر دائمی آواتار babak_delphi
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    آستارا
    پست
    634

    نقل قول: ذخيره عكس در بانك !!!

    برای نوشتن در دیتابیس هم با کمی تغییر میتونید از این روش استفاده کنید
    مزیت این روش اینه که همه نوع داده ای رو میشه با اون نوشت و خوند
    من از این برای خواندن و نوشتم فایل صوتی در دیتا بیس استفاده میکردم
    البته همونطور که Shervin Farzin اشاره کردند این روشها ربطی به فشرده سازی ندارند
    برای فشرده سازی روشهای دیگه ای وجود داره
    مثلا میتونید ZLib رو در سایت جستجو کنید

    موفق باشید

  11. #11
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    همدان
    پست
    131

    نقل قول: ذخيره عكس در بانك !!!

    با سلام.
    منظورم از فشرده سازی, استفاده از روش Stream نبود بلکه استفاده از روش هایی که babak_delphi به آن اشاره کردند بود.
    با کلید Zlib جستجو کردم ولی مثل همیشه موارد یافت شده ربطی به Zlib نداشتند !!
    اگه مثالی یا لینکی در رابطه با فشرده سازی عکس قرار بدین ممنون میشم.
    یه سوال دیگه;جدولی دارم که توش سوابق افراد ذخیره میشه;به نظرتون از چه نوع فیلدی استفاده کنم ؟(nvarchar,nText,...)
    آخرین ویرایش به وسیله acilios : دوشنبه 28 بهمن 1387 در 08:02 صبح

  12. #12
    کاربر دائمی آواتار shervin farzin
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مشهد - shervinfarzin@gmail.com
    پست
    256

    نقل قول: ذخيره عكس در بانك !!!

    سلام
    ابتدا Zlib رو در بخش Uses فرم اضافه كنيد . بعد از اون با استفاده از Function زير ميتونيد يك Stream ورودي رو فشرده كنيد :
    Function Zip(Source:TMemoryStream):TMemoryStream;
    var
    ComprStream:TCompressionStream;
    begin
    Result:=TMemoryStream.Create;
    comprStream:=TCompressionStream.Create(clFastest,R esult);
    try
    comprStream.CopyFrom(Source,Source.Size);
    finally
    comprStream.Free;
    end;
    end;

    به كمك تابع زير هم يك Stream فشرده شده رو باز ميكنيد ( البته فقط Stream هايي كه با تابع Zip فشرده كرديد .)
    Function UnZip(Source:TMemoryStream):TMemoryStream;
    var
    DeComprStream:TDecompressionStream;
    Buffer: Array[0..4000] of char;
    BufLen: Integer;
    begin
    Result:=TMemoryStream.Create;
    DeComprStream:=TDecompressionStream.Create(Source) ;
    try
    BufLen:=DeComprStream.Read(Buffer,SizeOf(Buffer));
    while BufLen>0 do
    begin
    Result.Write(Buffer,BufLen);
    BufLen:=DeComprStream.Read(Buffer,SizeOf(Buffer));
    end;
    Result.Seek(0,soFromBeginning);
    finally
    DeComprStream.Free;
    end;
    end;

    مثال :
    var
    Tmp:TMemoryStream;
    begin
    tmp:=TMemoryStream.Create;
    try
    // Zip File
    tmp.LoadFromFile('C:\pic.jpg');
    tmp:=Zip(tmp);
    tmp.SaveToFile('C:\pic.zzip');
    // Unzip File
    tmp.LoadFromFile('C:\pic.zzip');
    tmp:=UnZip(tmp);
    tmp.SaveToFile('C:\pic.jpg');
    finally
    tmp.Free;
    end;

    موفق باشيد .
    آخرین ویرایش به وسیله shervin farzin : دوشنبه 28 بهمن 1387 در 10:49 صبح

  13. #13
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    همدان
    پست
    131

    نقل قول: ذخيره عكس در بانك !!!

    با تشکر از پاسخ شما.
    در این کد :
    comprStream:=TCompressionStream.Create(clFastest,R  esult);
    پارامتر clfastest دارای مقادیر دیگه ای هم هست ؟چون توی برنامه های فشرده سازی مثل WinRAR قبل از فشرده کردن فایل شما می توانید حالت هایی را در نظر بگیرید;مثل:Fastest;Normal;Good;Best,...
    موفق باشید.

  14. #14
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    همدان
    پست
    131

    ویرایش عكس در بانك !!!

    سلام دوباره.
    دوستان عزیز همان طور که شما راهنمایی کردین برای ثبت عکس از کد زیر استفاده کردم :
    SQL.Add('insert into users(pic)'+'Values(:pic)');
    Parameters.ParamByName('pic').LoadFromFile(Fmusers .OpenPictureDialog1.FileName,ftBlob);
    ExecSQL;
    ولی برای ویرایش همان عکس ثبت شده از کد زیر استفاده کردم که با خطای زیر(عکس ضمیمه)روبرو شدم:

    SQL.Add('insert into users(pic)'+'Values(:pic) where code ='''+Edit1.Text+'''');
    Parameters.ParamByName('pic').LoadFromFile(Fmusers .OpenPictureDialog1.FileName,ftBlob);
    ExecSQL;
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg 1.JPG‏ (18.6 کیلوبایت, 96 دیدار)

  15. #15
    کاربر دائمی آواتار shervin farzin
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مشهد - shervinfarzin@gmail.com
    پست
    256

    نقل قول: ذخيره عكس در بانك !!!

    سلام
    خطايي كه بهش اشاره كرديد مربوط به اين ميشه كه فايل عكس رو پيدا نكرده يا آدرسي كه وارد برنامه ميشه اشتباه .
    پيشنهاد ميكنم قبل از استفاده از آدرس OpenPictureDialog ، اول اون رو Showmessage كنيد تا درستيش براي خودتون معلوم بشه .
    نكته ديگه اين كه براي ويرايش كردن جدولتون بايد از دستور Update استفاده كنين نه اين كه Insert رو با Where تركيب كنيد !!
    نكته بعد اين كه اگه نوع فيلد Code در جدولتون عددي هست ، نبايد مقدار Edit1.Text رو بين تگ قرار بدين.
    پس كد ويرايش شما ميشه كد زير :
    with ADOQuery1 do
    begin
    SQL.Clear;
    SQL.Add('Update users set pic=:P1 where code = :p2');
    Parameters.ParamByName('P1').LoadFromFile(OpenPict ureDialog1.FileName,ftBlob);
    Parameters.ParamByName('P2').Value:=edit1.Text;
    ExecSQL;
    end;

    موفق باشيد.

  16. #16
    کاربر دائمی آواتار Batman
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    ناكجاآباد
    پست
    887

    نقل قول: ذخيره عكس در بانك !!!

    با سلام
    جناب shervin farzin عزیز کدی که درباره فشرده سازی گذاشتید بعد از اینکه فایل رو unzip می کنم فایل خزاب میشه و دیگه باز نمیشه.

  17. #17
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    همدان
    پست
    131

    نقل قول: ذخيره عكس در بانك !!!

    با سلام.
    در مورد پیشنهادتون باید بگم که قبلا" این کار رو کردم;یعنی دیالوگ مسیر رو به درستی بر میگردونه(مقدار Opendialog.filename برابر با Null نیست ! ).
    ابتدا از دستور آپدیت برای این کار استفاده کردم;ولی نه به این شکلی که شما بیان کردین.
    در مورد نوع فیلد کد هم باید بگم از نوع "ان ور چر" هستش.
    در پایان از شما ممنونم;کدی که دادین رو تست میکنم و نتیجشو ارسال میکنم(اینجا خبری از دلفی نیست).
    موفق باشید.

  18. #18
    کاربر دائمی آواتار shervin farzin
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مشهد - shervinfarzin@gmail.com
    پست
    256

    نقل قول: ذخيره عكس در بانك !!!

    سلام
    نقل قول نوشته شده توسط Batman مشاهده تاپیک
    کدی که درباره فشرده سازی گذاشتید بعد از اینکه فایل رو unzip می کنم فایل خراب میشه و دیگه باز نمیشه.
    يه سوال : فايل Zip رو به كمك همين كد Zip كه نوشتم توليد كرديد يا مثلا WinZip ساختيد ؟
    اگه فايل Zip رو با همين Zip Function توليد كرديد پس لطفا كد Unzip كه نوشتيد روي سايت
    بذارين چون من از همين دو تابع استفاده ميكنم و مشكلي به وجود نمياد .
    موفق باشيد.

  19. #19
    کاربر دائمی آواتار Batman
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    ناكجاآباد
    پست
    887

    Wink نقل قول: ذخيره عكس در بانك !!!

    نقل قول نوشته شده توسط shervin farzin مشاهده تاپیک
    سلام

    يه سوال : فايل Zip رو به كمك همين كد Zip كه نوشتم توليد كرديد يا مثلا WinZip ساختيد ؟
    اگه فايل Zip رو با همين Zip Function توليد كرديد پس لطفا كد Unzip كه نوشتيد روي سايت
    بذارين چون من از همين دو تابع استفاده ميكنم و مشكلي به وجود نمياد .
    موفق باشيد.
    من دقیقا کدهای شما رو کپی کردم.
    بعد از اجرا حجم فایل unzip صفر میشه.
    در ضمن مقدار فشرده سازی چقدره؟یعنی این بهتره یا winrar یا نرم افزارهای شبیه اینها؟

  20. #20
    کاربر دائمی آواتار shervin farzin
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    مشهد - shervinfarzin@gmail.com
    پست
    256

    نقل قول: ذخيره عكس در بانك !!!

    سلام
    نقل قول نوشته شده توسط Batman مشاهده تاپیک
    مقدار فشرده سازی چقدره؟یعنی این بهتره یا winrar یا نرم افزارهای شبیه اینها؟
    در حد 7 يا 8 فايلي كه من استفاده كردم مخصوصا در مورد عكسها يه ذره از WinZip بهتر بود .
    ولي فقط در بعضي موارد از WinRAR بهتر عمل ميكرد .
    در مورد الگوريتم فشرده سازي كه در Zlib Unit استفاده ميشه اطلاعي ندارم .
    موفق باشيد.

  21. #21

    نقل قول: ذخيره عكس در بانك !!!

    سلام دوستان

    روش اضافه کردن تصوير به بانک DBISAM چه جوريه ؟

  22. #22
    کاربر دائمی آواتار peymanjon
    تاریخ عضویت
    مرداد 1388
    محل زندگی
    مشهد
    پست
    252

    نقل قول: ذخيره عكس در بانك !!!

    نقل قول: ذخيره عكس در بانك !!!

    نوشته شده توسط shervin farzin
    سلام

    يه سوال : فايل Zip رو به كمك همين كد Zip كه نوشتم توليد كرديد يا مثلا WinZip ساختيد ؟
    اگه فايل Zip رو با همين Zip Function توليد كرديد پس لطفا كد Unzip كه نوشتيد روي سايت
    بذارين چون من از همين دو تابع استفاده ميكنم و مشكلي به وجود نمياد .
    موفق باشيد.



    من دقیقا کدهای شما رو کپی کردم.
    بعد از اجرا حجم فایل unzip صفر میشه.


    منم این مشکل و دارم ، کسی هست که کد درست داشته باشه؟

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

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