powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Можно ли запомнить в поток или буфер содержимое TImage
4 сообщений из 4, страница 1 из 1
Можно ли запомнить в поток или буфер содержимое TImage
    #32129515
Alexander2_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, вот тут писали про то как загрузить картинку jpeg на компонент TImage

так работает:

jpg:=TJPEGImage.Create;
jpg.LoadFromFile(fileName);
imgCat.Picture.Assign(jpg);

а у меня вопрос - поскольку TImage имеет конечные размеры и если в сыойстве Stretch = True, то можно ли теперь запомнить куда-то содержимое TImage, чтоб оно фактическуи оказалось размером с физический размер самого TImage.

Например, если размер его 3 на 3 см то можно ли запомнить в буфер или в поток именно этот уменьшенный кусок и потом присвоить полю BLOB в таблице?
...
Рейтинг: 0 / 0
Можно ли запомнить в поток или буфер содержимое TImage
    #32129552
oleg_e
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понял, тебе нужно что-то типа:

imgCat.Canvas.CopyRect(imgCat.ClipRect, imgCanvas, img.ClipRect);

т.е. в imgCat копируешь рисунок не как есть, а уже растянутый как надо.
...
Рейтинг: 0 / 0
Можно ли запомнить в поток или буфер содержимое TImage
    #32129662
Александр2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jpg:=TJPEGImage.Create;

jpg.LoadFromFile(fileName);

imgCat.Picture.Assign(jpg);


Например, если размер его 3 на 3 см то можно ли запомнить в буфер или в поток именно этот уменьшенный кусок и потом присвоить полю BLOB в таблице?


>Насколько я понял, тебе нужно что-то типа:

Это что копирует в буфер?

imgCat.Canvas.CopyRect(imgCat.ClipRect, imgCanvas, img.ClipRect);



т.е. в imgCat копируешь рисунок не как есть, а уже растянутый как надо.


мне потом из буфер надо в поле таблицы скинуть
...
Рейтинг: 0 / 0
Можно ли запомнить в поток или буфер содержимое TImage
    #32129822
mitritch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
----- ЗАГРУЗКА В БАЗУ ЧЕРЕЗ ПОТОК ----------------------
begin
if OpenPictureDialog1.Execute then
begin
if Query1.State = dsBrowse then
Query1.Edit;
Query1FILENAME.Value := OpenPictureDialog1.FileName;
Pict := TPicture.Create;
try
Pict.LoadFromFile(OpenPictureDialog1.FileName);
Jpg := TJpegImage.Create;
Ss := TStringStream.Create('');
if Pict.Graphic is TJPegImage then
begin
Jpg.LoadFromFile(OpenPictureDialog1.FileName);
Jpg.SaveToStream(Ss);
Query1JPEG.AsString := Ss.DataString;
end
else
try
// if Pict.Graphic is TBitmap then
// begin
Jpg.Assign(Pict.Graphic);
Jpg.CompressionQuality := 70;
Jpg.PixelFormat:= jf24Bit;
Jpg.JPEGNeeded;
Jpg.SaveToStream(Ss);
Query1JPEG.AsString := Ss.DataString;
// end;
except
Result := MessageBox(Handle,'Данный формат не поддерживается!',PChar(Application.Title),16);
Query1.Cancel;
Exit;
end;
except
Result := MessageBox(Handle,'Данный формат не поддерживается!!',PChar(Application.Title),16);
Query1.Cancel;
Exit;
end;
// Ss.Free;
// Jpg.Free;
Query1.Post;
end;
end;

------------ ОТОБРАЖЕНИЕ ПРИ ПРСМОТРЕ БАЗЫ ------------------------

procedure TFm_spMain.DataSource1DataChange(Sender: TObject; Field: TField);
begin
Ss:= TStringStream.Create('');
Jpg:= TJPEGImage.Create;
try
if (Field = nil) and (not Query1JPEG.IsNull) then
begin
Ss.WriteString(Query1JPEG.AsString);
Ss.Position:= 0;
Jpg.LoadFromStream(ss);
Image1.Picture.Assign(Jpg);
end;
finally
Ss.Free;
Jpg.Free;
end;
end;
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Можно ли запомнить в поток или буфер содержимое TImage
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]