Bita.Jo
شنبه 30 مرداد 1389, 14:45 عصر
با سلام
من یک فیلد Image در جدولی دارم که User آنرا مشاهده کرده و تغییر می دهد.(SQl Server 2008, Delphi 2009)
از خواندن ونوشتن در دیتابیس با کمک MEmoryStream اسفاده کردم:
اشکالات:
1- اگر از Bitmap استفاده کنم حجم دیتا بیس شدیدا بالا می رود به ازای هر تصویر ساده 10 مگابایت که برای دیتابیس من با حجم حداقل1000 تصویرخیلی زیاد است:متعجب:
2- اگر از graphic استفاده کنم loadfromStream را خطا می گیرد(graphic را با Bitmap جایگزین کنم درست می شوددر حالی که هنگام ذخیره در جدول هم از Graphic استفاده می کنم)
(Access Violation At Address XXX)
if TBlobField(dmPhData.Query1.FieldByName('FileImage' )).BlobSize<>0 then
begin
Str:=TmemoryStream.Create;
try
TBlobField(dmPhData.Query1.FieldByName('FileImage' )).SaveToStream(Str);
Str.Position:=0;
خطا رخ می دهد:عصبانی++: image1.Picture.graphic.LoadFromStream(Str);
finally
Str.Free;
end;
end;
ذخیره در جدول بدون هیچ گونه مشکل
try
image1.Picture.graphic.SaveToStream(Str);
Str.Position:=0;
dmPhData.Query1.Edit;
TBLobField(dmPhData.Query1.FieldByName('FileImage' )).LoadFromStream(Str);
dmPhData.Query1.Post;
finally
Str.Free;
end;
ممنون می شوم راهنمایی کنید
بیتا
من یک فیلد Image در جدولی دارم که User آنرا مشاهده کرده و تغییر می دهد.(SQl Server 2008, Delphi 2009)
از خواندن ونوشتن در دیتابیس با کمک MEmoryStream اسفاده کردم:
اشکالات:
1- اگر از Bitmap استفاده کنم حجم دیتا بیس شدیدا بالا می رود به ازای هر تصویر ساده 10 مگابایت که برای دیتابیس من با حجم حداقل1000 تصویرخیلی زیاد است:متعجب:
2- اگر از graphic استفاده کنم loadfromStream را خطا می گیرد(graphic را با Bitmap جایگزین کنم درست می شوددر حالی که هنگام ذخیره در جدول هم از Graphic استفاده می کنم)
(Access Violation At Address XXX)
if TBlobField(dmPhData.Query1.FieldByName('FileImage' )).BlobSize<>0 then
begin
Str:=TmemoryStream.Create;
try
TBlobField(dmPhData.Query1.FieldByName('FileImage' )).SaveToStream(Str);
Str.Position:=0;
خطا رخ می دهد:عصبانی++: image1.Picture.graphic.LoadFromStream(Str);
finally
Str.Free;
end;
end;
ذخیره در جدول بدون هیچ گونه مشکل
try
image1.Picture.graphic.SaveToStream(Str);
Str.Position:=0;
dmPhData.Query1.Edit;
TBLobField(dmPhData.Query1.FieldByName('FileImage' )).LoadFromStream(Str);
dmPhData.Query1.Post;
finally
Str.Free;
end;
ممنون می شوم راهنمایی کنید
بیتا