Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Отображение изображений в delphi с сервера  [new]
dead end
Member

Откуда:
Сообщений: 9
Доброго времени суток.
Необходимо выгрузить картинку с сервера в приложение Delphi. Поле с изображением типа varbinarymax.
Загружал через компонент Image с помощью AdoQuery.


qadd.SQL.Add('insert into Работник(Табельный_номер,Фамилия, Имя,Отчество,Фото )') ;
qadd.SQL.Add('values( :Tnom,:SecName,:Name,:SurName,:Foto)');
qadd.Parameters.ParamByName('Foto').LoadFromfile(OPD1.FileName,ftBlob);

Пробовал через DbImage - вылезает ошибка Bitmap image is not valid.
Каким способом можно извлечь изображение?Какой компонент использовать?Или запрос?
5 дек 17, 17:47    [21008349]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 5985
Попробуйте, может заведется: 12082448
5 дек 17, 17:58    [21008399]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 5985
P.S.
но может и не взлететь, если Delphi какая-нибудь из последних
5 дек 17, 18:00    [21008403]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
чччД
Guest
dead end,

тебе сюда.

Но сначала - сюда.
5 дек 17, 18:01    [21008411]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43932

dead end
Загружал через компонент Image с помощью AdoQuery.

Ну, поздравляю. При этом ты потерял информацию о его формате. Теперь у тебя два пути:
загрузить изображения снова, на этот раз сохраняя их имя (или по крайней мере расширение)
или применить компонент/код, анализирующий сигнатуру их заголовка при загрузке из TBlobStream.

Posted via ActualForum NNTP Server 1.5

5 дек 17, 18:07    [21008419]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
dead end
Member

Откуда:
Сообщений: 9
Кроик Семён,

файл dpk даже не открывается(
5 дек 17, 18:08    [21008423]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
dead end
Member

Откуда:
Сообщений: 9
Dimitry Sibiryakov
dead end
Загружал через компонент Image с помощью AdoQuery.


загрузить изображения снова, на этот раз сохраняя их имя (или по крайней мере расширение)


каким образом это осуществляется?
5 дек 17, 18:09    [21008431]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
dead end
Member

Откуда:
Сообщений: 9
чччД,

там сказали спросить у "делфистов"))
5 дек 17, 18:10    [21008433]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
чччД
Guest
dead end
чччД,

там сказали спросить у "делфистов"))


Тогда - в армию. Там хорошо, паёк, порядок, уважение мужчин, внимание женщин.
5 дек 17, 18:14    [21008439]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
чччД
Guest
Попробуй выгрузить картинку в файл и натравить на него какой-нибудь просмотрщик файлов. Так узнаешь формат файлов, если повезет.
Возможно, остальные картинки у тебя такого же формата.
5 дек 17, 18:19    [21008451]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43932

dead end
каким образом это осуществляется?

Точно таким же, только в табличке на одно поле больше.

Posted via ActualForum NNTP Server 1.5

5 дек 17, 18:19    [21008452]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1293
dead end,

проще всего конечно сохранять тип файла, но если его нет, то можно по очереди открывать разными компонентами и отлавливать ошибки, снача TJPEG, потом TBItmap, TPNG (не помню, есть там суффикс Image или нет)
5 дек 17, 18:24    [21008464]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 5985
dead end
Кроик Семён,

файл dpk даже не открывается(


какая версия Delphi?
5 дек 17, 18:29    [21008486]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 718
TWebBrowser откроет любой поддерживаемый системой формат и без расширения файла.
Потом "Сохранить изображение как..." и видим расширение.
5 дек 17, 18:32    [21008493]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
dead end
Member

Откуда:
Сообщений: 9
Кроик Семён,

xe3
5 дек 17, 18:34    [21008502]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 718
по идее можно даже сразу стрим в него грузить без сохранения в файл
5 дек 17, 18:35    [21008504]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
dead end
Member

Откуда:
Сообщений: 9
Zelius,
все изображения,которые загружались, формата Png, но я все равно не понимаю как использовать это(
5 дек 17, 18:36    [21008510]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
dead end
Member

Откуда:
Сообщений: 9
Zelius,

эти компоненты дополнительно надо устанавливать? не могу найти
5 дек 17, 18:38    [21008514]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1293
dead end,

в uses пропиши Graphics, jpeg, PngImage, GIFImg,

во что откопал:
function FindGraphicClass(const Buffer; const BufferSize: Int64;
out GraphicClass: TGraphicClass): Boolean;
var
  LongWords: array[Byte] of LongWord absolute Buffer;
  Words: array[Byte] of Word absolute Buffer;
begin
  GraphicClass := nil;
  Result := False;
  if BufferSize < MinGraphicSize then Exit;
  case Words[0] of
    $4D42: GraphicClass := TBitmap;
    $D8FF: GraphicClass := TJPEGImage;
    $4949: if Words[1] = $002A then GraphicClass := TWicImage; //i.e., TIFF
    $4D4D: if Words[1] = $2A00 then GraphicClass := TWicImage; //i.e., TIFF
  else
  if Int64(Buffer) = $A1A0A0D474E5089 then
    GraphicClass := TPNGImage
  else if LongWords[0] = $9AC6CDD7 then
    GraphicClass := TMetafile
  else if (LongWords[0] = 1) and (LongWords[10] = $464D4520) then
    GraphicClass := TMetafile
  else if StrLComp(PAnsiChar(@Buffer), 'GIF', 3) = 0 then
    GraphicClass := TGIFImage
  else if Words[1] = 1 then
    GraphicClass := TIcon;
  end;
  Result := (GraphicClass <> nil);
end;

правда не знаю, работает ли :)
5 дек 17, 18:50    [21008537]     Ответить | Цитировать Сообщить модератору
 Re: Отображение изображений в delphi с сервера  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1293
dead end,

ну и вот что имел ввиду

  function OpenGraphic( aData: TSTream; out aExt: String): TGraphic;
  const
    ImageClassses:   array[0..3] of TGraphicClass = ( TJPEGImage, TPngImage, TGIFImage, TBitmap);
    ImageExtensions: array[0..3] of String = ( '.jpg', '.png', '.gif', '.bmp');
  var
    i: Integer;
  begin
    Result := nil;
    for i := 0 to Length(ImageClassses)-1 do
    try
      Result := ImageClassses[i].Create;
      aData.Position := 0;
      Result.LoadFromStream(aData);
      aExt := ImageExtensions[i];
      break;
    except
      Result := nil;
    end;
  end;
5 дек 17, 18:54    [21008545]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить