Форум: "Базы";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];
ВнизКак добавить фотографию в поле Graphic? Найти похожие ветки
← →
Andreich (2004-02-06 15:34) [0]Как добавить фотографию в поле Graphic?
Table1.FieldByName("foto").......;
← →
MV (2004-02-06 15:38) [1](Table1.FieldByName("foto") as TBlobField).LoadFromFile("C:\PayBoy\OneGirl");
← →
Andreich (2004-02-06 15:57) [2]Хотел сделать выдает ошибку
form1.Table1.FieldByName("foto").AsVariant:= image1.Picture ;
Пишет не совместимы типы Variant и Picture
← →
MV (2004-02-06 16:06) [3]Ах, вот ты какой!
Ну, тогда:
1. Из буфера обмена - в базу и в фотку сразу:
var
S: TStream;
begin
if not Clipboard.HasFormat(CF_BITMAP) then begin
ShowMessage("В буфере обмена нет изображения!");
exit
end;
DataSet.DisableControls;
S := DataSet.CreateBlobStream(
DataSet.FieldByName("foto"), bmWrite);
try
try
Image1.Picture.Bitmap.LoadFromClipBoardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
Image1.Picture.Graphic.SaveToStream(S);
except
on e: Exception do ShowMessage("Ошибка загрузки из буфера обмена:"#13
+e.Message);
end
finally
DataSet.EnableControls;
S.Free;
end;
end;
2. Из картинки:
Image1.Picture.Bitmap.SaveToStream(Table1.FieldByName("foto") as TBlobField);
← →
Andreich (2004-02-06 16:12) [4]Мне надо вставить картинку в поле из Image почему так не подходит
form1.Table1.FieldByName("foto").AsVariant:= image1.Picture ;
Надо заместо AsVariant поставить as TBlobField но почему именно Blob? Если BlobType у меня FtGraphic???
← →
MV (2004-02-06 16:18) [5]Ну вы и нудный...
Если не хотите, как все, - делайте, как нравится.
← →
Val (2004-02-06 16:18) [6]>Andreich (06.02.04 16:12) [4]
скажите, а вы ответы читаете, или просто писАть в форум любите?
← →
Andreich (2004-02-06 16:20) [7]Ну пытаюсь сделать как вы говорите
form1.Table1.FieldByName("foto").Asblobfile:= dbimage1.Picture.bitmap ;
Выдает ошибку [Error] Unit2.pas(162): Undeclared identifier: "Asblobfield"
← →
MV (2004-02-06 16:23) [8]Издевается!
Где я такой бред приводил:
form1.Table1.FieldByName("foto").Asblobfile:= dbimage1.Picture.bitmap ;
??????
← →
Andreich (2004-02-06 16:23) [9]Вернее так
form1.Table1.FieldByName("foto").Asblobfield:= dbimage1.Picture.bitmap ;
← →
Andreich (2004-02-06 16:25) [10]Да даже если так все равно та же самая ошибка
dbImage1.Picture.Bitmap.SaveToStream(form1.Table1.FieldByName("foto") as TBlobField);
[Error] Unit2.pas(239): Undeclared identifier: "TBlobField"
← →
MV (2004-02-06 16:26) [11]Давай-давай. Попробуй еще AsFoto, AsPhoto, AsImage, AsWhatIwant, AsWhyIAmSoFat, AsWhyIAmSoClever...
← →
gsvserg (2004-02-06 16:26) [12]uses db;
← →
Val (2004-02-06 16:28) [13]не, uses МОЗГИ, блин, честное слово.
← →
gsvserg (2004-02-06 16:29) [14]согласен
← →
Andreich (2004-02-06 16:52) [15]>MV
Просто пример который ты мне дал не работает:
dbImage1.Picture.Bitmap.SaveToStream(form1.Table1.FieldByName("foto") as TBlobField);
выдает ошибку
[Error] Unit2.pas(239): Undeclared identifier: "TBlobField"
← →
VLAD-MAL (2004-02-06 16:58) [16]А как насчет простого примера
gsvserg © (06.02.04 16:26) [12]
uses db; ?
← →
Romkin (2004-02-06 17:17) [17]Достали...
function GetStreamImgType(Stream: TStream): TClass;
var
StreamPos: int64;
ImgSign: string;
begin
StreamPos := Stream.Position;
try
//BMP если не определено
Result := Graphics.TBitmap;
//JPEG
SetLength(ImgSign, 4);
Stream.Seek(6, soFromCurrent);
Stream.Read(ImgSign[1],4);
if (UpperCase(ImgSign) = "JFIF") or (UpperCase(ImgSign) = "EXIF") then
Result := Jpeg.TJPEGImage;
//WMF
Stream.Position := StreamPos;
SetLength(ImgSign, 4);
Stream.Read(ImgSign[1],4);
if ImgSign = #$D7#$CD#$C6#$9A then
Result := Graphics.TMetafile;
finally
Stream.Position := StreamPos;
end;
end;
procedure LoadProperImage(Stream: TStream; Picture: TPicture);
var
Img: TGraphic;
StreamPos: int64;
begin
StreamPos := Stream.Position;
Img := TGraphicClass(GetStreamImgType(Stream)).Create;
try
Stream.Position := StreamPos;
Img.LoadFromStream(Stream);
Picture.Graphic := Img;
finally
Img.Free;
end;
end;
function LoadPictureFromBLOB(Picture: TPicture; Field: TBlobField): boolean;
var
Stream: TStream;
begin
Result := False;
if not Field.isNULL then
begin
Stream := TMemoryStream.Create;
try
Field.SaveToStream(Stream);
Stream.Position := 0;
LoadProperImage(Stream, Picture);
Result := True;
finally
Stream.Free;
end;
end;
end;
procedure SavePictureToBlob(Picture: TPicture; Field: TBlobField);
var
Stream: TStream;
begin
if not (Field.DataSet.State in [dsEdit, dsInsert]) then
Field.DataSet.Edit;
Field.Clear;
if Assigned(Picture.Graphic) then
if not Picture.Graphic.Empty then
begin
Stream := TMemoryStream.Create;
try
Picture.Graphic.SaveToStream(Stream);
Stream.Position := 0;
Field.LoadFromStream(Stream);
finally
Stream.Free;
end;
end;
end;
uses DB, Jpeg, Graphics, Classes как минимум
И не надо спрашивать, где взять Picture
← →
MV (2004-02-06 17:20) [18]А где взять TStream?
← →
Val (2004-02-06 17:22) [19]>Romkin © (06.02.04 17:17) [17]
можно спросить, как прочитать/посмотреть tif? ;)
← →
MV (2004-02-06 17:23) [20]Пора в другую ветку...
← →
Andreich (2004-02-06 17:45) [21]Ну а почему этот пример не работает, если все правильно?
dbImage1.Picture.Bitmap.SaveToStream(form1.Table1.FieldByName("foto") as TBlobField);
← →
MV (2004-02-06 17:48) [22]В Uses стоит DB?
← →
Andreich (2004-02-06 17:53) [23]>MV (06.02.04 17:48) [22]
>В Uses стоит DB?
да, стоит, я уже не знаю что и делать
← →
VLAD-MAL (2004-02-06 17:54) [24]И как ругается?
← →
Andreich (2004-02-06 17:57) [25]dbImage1.Picture.Bitmap.SaveToStream(form1.Table1.FieldByName("foto") as TBlobField);
выдает ошибку
[Error] Unit2.pas(239): Undeclared identifier: "TBlobField"
← →
VLAD-MAL (2004-02-06 17:58) [26]>MV (06.02.04 17:48) [22]
>В Uses стоит DB?
да, стоит, я уже не знаю что и делать
- тогда, похоже, ты меня обманываешь...
← →
residen007 (2004-02-07 22:45) [27]Решение здесь уже приведено, я лишь хочу спросить -- а на фига в хрупкую таблицу Paradox добавлять blob-объект, не проще ли ссылку на файл с изображением в какой-нибудь директории?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.008 c