نقل قول: ذخیره عکس در بانک sql
سلام.
دو تا پردازه برات میگذارم که خودم با اونا کار می کنم:
procedure LoadPictureFromField(ADOContainer: TCustomADODataSet; BlobField: TBlobField; Img: TImage);
var
Stream:TStream;
JPG: TJPEGImage;
JPG_Error: boolean;
begin
Stream := TStream.Create;
JPG := TJPEGImage.Create;
Stream := ADOContainer.CreateBlobStream(BlobField,bmRead);
if Stream.Size = 0 then
begin
Img.Picture.Assign(nil);
exit;
end;
JPG_Error := false;
try
JPG.LoadFromStream(Stream);
except
JPG_Error := true;
end;
if not JPG_Error then
begin
Stream.Destroy;
Img.Picture.Assign(JPG);
JPG.Destroy;
end
else
begin
Stream.Destroy;
JPG.Destroy;
Img.Picture.Assign(BlobField); // when old type exists in DB started by 0x424D
end;
end;
procedure SavePictureToField(ADOContainer: TADOStoredProc; Parameter: string; Img: TImage);
var
JPG : TJPEGImage;
MemoryStream : TMemoryStream;
begin
if Img.Picture.Graphic <> nil then
begin
// SetPictureMinimalToSave(Img, 100);
JPG := TJPEGImage.Create;
MemoryStream := TMemoryStream.Create;
JPG.Assign(Img.Picture.Graphic);
JPG.SaveToStream(MemoryStream);
ADOContainer.Parameters.paramByName(Parameter).Loa dFromStream(MemoryStream,ftVarBytes);
MemoryStream.Destroy;
JPG.Destroy;
end
else
ADOContainer.Parameters.paramByName(Parameter).Val ue := null;
end;
نحوه فراخوانی ساده ای هم دارند.
برای ذخیره:
SavePictureToField(SP, '@Field', Image);
برای بازیابی:
LoadPictureFromField(SP, SPField, Image);
این هم برای کم حجم کردن عکس قبل از ذخیره:
procedure SetPictureMinimalToSave(IMG: TImage; Quality: TJPEGQualityRange = 100);
var
JPG: TJPEGImage; {U30: decrease size of picture fit to Image and JPG}
BMP: TBitmap;
begin
BMP := TBitmap.Create;
JPG := TJPEGImage.Create;
BMP.Assign(IMG.Picture.Graphic);
IMG.Picture.Assign(BMP);
BMP.Width := IMG.Width;
BMP.Height := IMG.Height;
BMP.Canvas.StretchDraw(BMP.Canvas.ClipRect,IMG.Pic ture.Graphic);
JPG.Assign(BMP);
JPG.CompressionQuality := Quality;
JPG.Compress;
IMG.Picture.Assign(JPG);
BMP.Destroy;
JPG.Destroy;
end;
نقل قول: ذخیره عکس در بانک sql
procedure ها رو توی برنامم گذاشتم اما نتونستم نتیجه بگیرم لطف می کنید یک مثال برام بزارین ممنون می شم.:خجالت:
نقل قول: ذخیره عکس در بانک sql
ببینید مثلا یک SPبه نام SPExteraFieldsValueTBL دارید که فیلدی add شده به نام SPExteraFieldsValueTBLValueEFV از نوع BlobField داره.
برای بازیابی :
LoadPictureFromField(SPExteraFieldsValueTBL, SPExteraFieldsValueTBLValueEFV, Image1); // load to image1
و برای ذخیره مثلا در SP به نام SPExteraFieldsValueUpdate دارای یک پارامتر به نام @ValueEFV و از نوع ftVarBytes :
SavePictureToField(SPExteraFieldsValueUpdate, '@ValueEFV', Image1)// saving image1
خیلی سخت نیست.
نقل قول: ذخیره عکس در بانک sql
نقل قول:
نوشته شده توسط
You-See
ببینید مثلا یک SPبه نام SPExteraFieldsValueTBL دارید که فیلدی add شده به نام SPExteraFieldsValueTBLValueEFV از نوع BlobField داره.
برای بازیابی :
LoadPictureFromField(SPExteraFieldsValueTBL, SPExteraFieldsValueTBLValueEFV, Image1); // load to image1
و برای ذخیره مثلا در SP به نام SPExteraFieldsValueUpdate دارای یک پارامتر به نام @ValueEFV و از نوع ftVarBytes :
SavePictureToField(SPExteraFieldsValueUpdate, '@ValueEFV', Image1)// saving image1
خیلی سخت نیست.
سلام
برنامه دبیرخانه رو پارسال تحویل دادم اما عکسها رو توی بانک ذخیره نکردم.در حال حاضر روی یک برنامه دیگه دارم کار می کنم که چون روی شبکه قرار می گیره حتما باید عکسها داخل بانک ذخیره بشه.
یک سوال داشتم منظور از SP چیه من متوجه نشدم میشه لطف کنید راهنماییم کنید.می خوام عکسام توی بانک sql2000 ذخیره بشه از adoquery استفاده می کنم.ممنون
نقل قول: ذخیره عکس در بانک sql
sp مخفف Stored Procedure است که در این لینک بیشتر توضیح داده شده: http://en.wikipedia.org/wiki/Stored_procedure
نقل قول: ذخیره عکس در بانک sql
با سلام
بنظر من ذخیره عکس در تیبل با توجه اینکه SQL Server در فیلدهایی از نوع varbinary(max) بیش از 2GB را نمیتوان ذخیره کند ،منطقی نمی باشد.
مایکروسافت برای حل مشکلات ذخیره فایل در SQL Server 2008 قابلیت جدیدی را ارائه داده کرده است به نام FileStream که در تاپیک https://barnamenevis.org/showthread.p...84%D9%81%DB%8C بحث شده است