Jpeg error 53 delphi

JPEG error #53 Delphi Решение и ответ на вопрос 341022

Цитата
Сообщение от DenNik
Посмотреть сообщение

вот попробуй. Только при запуске из-под Делфи он выдаст ошибку. Просто я не помню как отключить контроль. Поэтому запускай из проводника

Delphi
1
2
3
4
5
6
7
8
9
...
  except
    on EInvalidGraphic do
    begin
      NewFName:= path + 'govno' + ExtractFileName(s[i]);
      MoveFile(PChar(s[i]),PChar(NewFName));
    end;
  end;
...

СПАСИБО!!!! работает, но ошибку из делфи и правда выдает…

блин теперь запнулся на том как это все в цикл поставить чтобы все файлы в директории перебрать
я пытаюсь сделать так

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
procedure TForm1.Button1Click(Sender: TObject);
var
  j: TJPEGImage;
  Path, sto : String;
  a: Integer;
 
  begin
    Path := ExtractFilePath(ParamStr(0));
    sto:=Edit4.Text;
 
    j:= TJPEGImage.Create;
 try
   for a:=0 to strtoint(sto) do
    Begin
    j.LoadFromFile(Path +'zaga' +inttostr(a) +'.jpg');
 
 
   if j.Width > j.Height then
   j.SaveToFile(Path +'gor' +inttostr(a) +'.jpg')
   else
   if j.Width < j.Height then
   j.SaveToFile(Path +'ver' +inttostr(a) +'.jpg')
   else
   if j.Width = j.Height then
   j.SaveToFile(Path +'kv' +inttostr(a) +'.jpg');
 
   j.Free;
   End;
 
 except
 
 on EInvalidGraphic do
    begin
      NewFName:= Path + 'govno' + ExtractFileName(s[i]);
      MoveFile(PChar(s[i]),PChar(NewFName));
    end;
  end;
 
end;

в поле Edit4 ввожу сколько в папке zaga файлов
все файлы имеют имя от 0 и тд 0.jpg , 1.jpg ….

но почему то файлы не перебирает а берет один тот что указал в поле Edit4

Добавлено через 4 часа 12 минут
блин чето вообще запутался…
каким то волшебным образом все работало, только не получалось в цикл загнать

сейчас запускаю прогу опять вылетает

голова пухнет….

подскажи пожалуйста
NewFName:= path + ‘govno’ + ExtractFileName(s[i]);
MoveFile(PChar(s[i]),PChar(NewFName));

мне надо в переменные добавить
NewFName это как я понимаю будет String

а вот тут PChar(s[i])

s и i что это и откуда беруться?

Jpeg error 53 delphi

В MSSQL есть BLOB поле под названием «Picture». Нужно получить и сохранить его в виде JPEG файла.
Делаю так:

(FieldByName(«Picture») as TBlobField).SaveToFile(«c:1.jpg»);

Файл нормально создается, но не открывается ни одним просмотрщиком картинок. Вероятно, файл создается с «неправильной» структурой.
В чем тут может быть дело?
Спасибо.


DVM © ( 2008-08-29 10:50 ) [1]


> В чем тут может быть дело?

в том что он уже в базе лежит в неправильном формате


Vlad Oshin © ( 2008-08-29 11:02 ) [2]

так что-нибудь показывает?
Image1.Picture.Bitmap.Assign(TBLOBField(Table1.Fields[1]));


Ega23 © ( 2008-08-29 11:07 ) [3]


> Вероятно, файл создается с «неправильной» структурой.
> В чем тут может быть дело?

Из базы выгружаешь правильно. Значит там лежит некорректный jpeg. Или вообще не jpeg.


Плохиш © ( 2008-08-29 11:12 ) [4]


> mefodiy (29.08.08 10:48)
> В MSSQL есть BLOB поле под названием «Picture». Нужно получить
> и сохранить его в виде JPEG файла.

Хм, оригинально, какой-нибуть ворд-документ в виде jpeg файла :-))

автор, какие первые 4 байта в c:1.jpg?


mefodiy ( 2008-08-29 12:54 ) [6]

Вообще-то это БД от Navision. В самом Navision есть возможность выгружать картинки командами
Picture.EXPORT(«c:1.jpg»);
Picture.EXPORT(«c:1.bmp»);
И тот, и другой формат после выгрузки нормально просматривается всеми известными программами. Но в Delphi, если через TImage bmp загружается и просматриватся нормально, то jpg дает ошибку «JPEG error #53».
В то же время
1. (FieldByName(«Picture») as TBlobField).SaveToFile(«c:1.jpg»);
при выполнении ошибки не дает, но созданный файл при загрузке в TImage дает ту же ошибку «JPEG error #53».
2. Команда
Image1.Picture.Bitmap.Assign(TBLOBField(FieldByName(«Picture»)));
при выполнении дает ошибку:
«Bimap image is not valid»


Ega23 © ( 2008-08-29 13:00 ) [7]

JPEG error #36 — Output File Error — Possibly out of disk space
JPEG error #51 — Quantization table not defined
JPEG error #52 — File is not a JPEG file
JPEG error #53 — Insufficient Memory
JPEG error #60 — Incomplete File
JPEG error #67 — Incomplete File


mefodiy ( 2008-08-29 13:12 ) [8]

>JPEG error #53 — Insufficient Memory
Как лечить?


stas © ( 2008-08-29 13:25 ) [9]

mefodiy (29.08.08 12:54) [6]
Рисунок у них в базе может хранится как угодно, допустим bmp сжатый раром или зипом.

загрузить(средствами delphi )
заранее читаемую(средствами delphi ) картинку и
выгрузить(средствами delphi )


mefodiy ( 2008-08-29 14:02 ) [11]

>а если
>загрузить(средствами delphi )
>заранее читаемую(средствами delphi ) картинку и
>выгрузить(средствами delphi )
>, читается?

Все нормально читается


Плохиш © ( 2008-08-29 14:15 ) [12]


> mefodiy (29.08.08 14:02) [11]
> Все нормально читается

А теперь попробуй выгрузить их с помощью

> Вообще-то это БД от Navision. В самом Navision есть возможность
> выгружать картинки командами
> Picture.EXPORT(«c:1.jpg»);
> Picture.EXPORT(«c:1.bmp»);

А потом долго подумай.


Anatoly Podgoretsky © ( 2008-08-29 15:13 ) [13]

Значит надо делать средствами Navision, видимо хранится не в чистом, а в своем формате, при экспорте преобразовывается в нужный.

И где первые четыре байта файла?


mefodiy ( 2008-08-29 15:42 ) [14]

>Значит надо делать средствами Navision, видимо хранится не в чистом, а в >своем формате, при экспорте преобразовывается в нужный.

База данных Navision построена на MSSQL и тип поля там BLOLB.
К сожалению, это надо делать именно средствами Дельфи.
Как могу посмотреть первые 4 байта?


> Как могу посмотреть первые 4 байта?

hex редактор


Ega23 © ( 2008-08-29 15:47 ) [16]


> Как могу посмотреть первые 4 байта?


stas © ( 2008-08-29 15:48 ) [17]

>mefodiy (29.08.08 15:42) [14]
В BLOB хранится может все что угодно
stas © (29.08.08 13:25) [9]


Anatoly Podgoretsky © ( 2008-08-29 16:31 ) [18]

После «(FieldByName(«Picture») as TBlobField).SaveToFile(«c:1.jpg»);» посмотреть любым HEX редактором, результат сюда.


Vlad Oshin © ( 2008-08-29 16:52 ) [19]


> Рисунок у них в базе может хранится как угодно, допустим
> bmp сжатый раром или зипом

кстати, да. Не понятно зачем, но может.
Может его сохранить как zip и натравить архиватор?
zip — просто, архиваторы теперь умные, сами попробуют определить что это.


mefodiy ( 2008-08-29 19:46 ) [20]

Первые четыре байта:
01 44 7C 5A


Amoeba © ( 2008-08-29 22:01 ) [21]


> mefodiy (29.08.08 19:46) [20]
>
> Первые четыре байта:
> 01 44 7C 5A
>

Это х.з., но только не JPEG: FFD8FFE1


Ega23 © ( 2008-08-31 14:19 ) [22]

Это не jpeg. Вообще непонятно, что это такое.

Источник

Jpeg error 53 delphi

Профиль
Группа: Участник
Сообщений: 14
Регистрация: 20.8.2009

Репутация: нет
Всего: нет

Вопрос таки, хатя пратоптаный и перетоптанный в форуме но конкретнего решениа я нигде не нашол.
На форме лежит DBGrid, ADOConnection, ADOQuery,DataSourse и BitBtn.
В таблице ест поле в котором лежит фотографиа.
при нажатии на BitBtn виводится сообшение JPEG error #53.

procedure TForm1.BitBtn1Click(Sender: TObject);
var
Jpg: TJPegimage;
begin
if ADOQuery1.RecordCount=1 then
begin
Jpg:=TJPegImage.Create;
Jpg.Assign(DBGrid1.Columns.Items[7].Field);
Image1.Picture.LoadFromFile(DBGrid1.Columns.Items[7].Field.AsString);

может кто подскажет в чем моя проблема.

malxazibb
Дата 26.8.2009, 13:35 (ссылка) | (нет голосов) Загрузка .
M
THandle
Модератор: используйте подсветку кода!

Это сообщение отредактировал(а) THandle — 26.8.2009, 13:56

Frees
Дата 26.8.2009, 14:09 (ссылка) | (нет голосов) Загрузка .

Эксперт

Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54

Alexeis
Дата 26.8.2009, 14:11 (ссылка) | (нет голосов) Загрузка .

Амеба

Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459

Код
Jpg.Assign(DBGrid1.Columns.Items[7].Field);

А почему это должно работать? TJPegImage может загрузить картинку из файла или потока. Метод Assign требует чтобы ему передали наследника TGraphic, т.е. объект VCL, а не сырые данные которые хранятся в blob поле. Советую поискать по форуму или гуглу «загрузка изображения из blob поля Delphi». Вопрос избитый нет смысла придумывать с нуля.

Добавлено через 4 минуты и 7 секунд

Цитата(Frees @ 26.8.2009, 13:09 )
используй TDBImage

TDBImage работает ТОЛЬКО с битмапом. Так что он тут никак не поможет.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать

Данкинг
Дата 26.8.2009, 14:49 (ссылка) | (нет голосов) Загрузка .

Yersinia pestis

Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130

Что содержится в поле таблицы — сама картинка или путь к ней? Если картинка (т.е. BLOB-поле), то ищи на форуме, как вставлять, даже я такую тему поднимал.

И зачем нужно «Jpg.Assign(DBGrid1.Columns.Items[7].Field);» ?

Профиль
Группа: Участник
Сообщений: 14
Регистрация: 20.8.2009

Репутация: нет
Всего: нет

спасибо всем кто не поленилсая и дал совети.

пока сам помучаюс и потом опять присоединюс к форуму.

malxazibb
Дата 26.8.2009, 15:35 (ссылка) | (нет голосов) Загрузка .
Данкинг
Дата 26.8.2009, 17:28 (ссылка) | (нет голосов) Загрузка .

Yersinia pestis

Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

Правила форума «Delphi: Для новичков»
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »

[ Время генерации скрипта: 0.1115 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Источник

Adblock
detector

<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px;»>I have a datasnap server with a servermethod to load a stream, im getting <strong style=»margin: 0px; padding: 0px; border: 0px;»>jpeg error #53[/b], my goal is get a thumbnail size, im getting the stream from BLOB fiel, load into a Bitmap object, then a create a thumbnail and convert that thumbnail to a stream back and send to the client

<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px;»>Error after loading the stream

<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px;»>I’m using XE7, MSSQL, VLC Datasnap Server

<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px;»>Server Side

<pre style=»margin-top: 0px; border: 0px; font-size: 13px; overflow: auto; width: auto; max-height: 600px; font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace, sans-serif; word-wrap: normal; color: #222222; background-color: #eeeeee;»><code style=»margin: 0px; padding: 0px; border: 0px; font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace, sans-serif; white-space: inherit;»>function TDSServerMethods.GetImage(proid, Width, Height: Integer; out ImgStream: TStream): Boolean;
var
Bitmap,Bitmap2: FMX.Graphics.TBitMap;
scale: Single;
T:TStream;
stream: TStream;
begin
Result := False;
ImgStream := nil;
WITH SPPROC do
begin
close;
ProcedureName := ‘XXXXXX’;
Parameters.Clear ;
Parameters.CreateParameter(‘@ID’, ftInteger,pdInput, 0,proid );
Open;
Result := recordcount > 0;

end;

try

T := SPPROC.CreateBlobStream(SPPROC.FieldByName(‘file’),TBlobStreamMode.bmRead);
T.Seek( 0, TSeekOrigin.soBeginning );
T.Position := 0;

Bitmap := FMX.Graphics.TBitMap.Create;
Bitmap.LoadFromStream( T );

scale := RectF(0, 0, Bitmap.Width, Bitmap.Height).Fit(RectF(0, 0, 200, 200));
Bitmap2 := Bitmap.CreateThumbnail(Round(Bitmap.Width / scale), Round(Bitmap.Height / scale));

stream := TMemoryStream.Create;

stream.Position := 0;
Bitmap2.SaveToStream(stream);
stream.Seek( 0, TSeekOrigin.soBeginning );
stream.Position := 0;

ImgStream := stream

except
Exit(False);
end;

end;

</code></pre>
<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px;»>

<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px; white-space: normal; background-color: #ffffff;»>Client Side

<pre style=»margin-top: 0px; border: 0px; font-size: 13px; overflow: auto; width: auto; max-height: 600px; font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace, sans-serif; word-wrap: normal; color: #222222; background-color: #eeeeee;»><code style=»margin: 0px; padding: 0px; border: 0px; font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace, sans-serif; white-space: inherit;»>procedure TFrmMain.Button3Click(Sender: TObject);
var
AImageStream: TStream;
jp: TJPEGImage;

begin

if ( DSServerMethods.GetImage(1038,0, 0, AImageStream)) then

begin
jp := TJPEGImage.Create;
AImageStream.Position := 0;
jp.LoadFromStream( AImageStream ); **here i got jpeg error #53**
Image1.Picture.Assign( jp );

end;

end;

</code></pre>
<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px; white-space: normal; background-color: #ffffff;»>

<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px; white-space: normal; background-color: #ffffff;»>in this line is the error <strong style=»margin: 0px; padding: 0px; border: 0px;»>jpeg error #53[/b] jp.LoadFromStream( AImageStream );

<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px; white-space: normal; background-color: #ffffff;»>But, if i use this server function all work fine

<pre style=»margin-top: 0px; border: 0px; font-size: 13px; overflow: auto; width: auto; max-height: 600px; font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace, sans-serif; word-wrap: normal; color: #222222; background-color: #eeeeee;»><code style=»margin: 0px; padding: 0px; border: 0px; font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace, sans-serif; white-space: inherit;»> function TDSServerMethods.GetImage(proid, Width, Height: Integer; out ImgStream: TStream): Boolean;
var
Bitmap,Bitmap2: FMX.Graphics.TBitMap;
scale: Single;
T:TStream;
stream: TStream;
begin

Result := False;
ImgStream := nil;
WITH SPPROC do
begin
close;
ProcedureName := ‘XXXXXX’;
Parameters.Clear ;
Parameters.CreateParameter(‘@ID’, ftInteger,pdInput, 0,proid );
Open;
Result := recordcount > 0;

end;

try

ImgStream := SPPROC.CreateBlobStream(SPPROC.FieldByName(‘file’),TBlobStreamMode.bmRead);

except
Exit(False);
end;

end;</code></pre>

#delphi #jpeg #delphi-10.3-rio

#delphi #jpeg

Вопрос:

Временные рамки.Изображение.Загрузка из файла (‘File.jpg ‘);

но я получил ошибку JPEG # 53! в чем причина этой ошибки?

Ответ №1:

Обычно это происходит, когда изображение в формате Jpeg загружается из Интернета и загрузка не завершена на 100%. Это может произойти даже с временным интервалом. К сожалению, у Jpeg нет контрольной суммы для проверки.

Единственное, что вы можете сделать, это всякий раз, когда выдается эта ошибка, перехватывать ее и отображать более отзывчивое сообщение типа «Изображение повреждено»..

Поскольку это вызывает ошибку:

 procedure JpegError(cinfo: j_common_ptr); {$IFDEF LINUX} cdecl; export; {$ENDIF}
begin
  raise EJPEG.CreateFmt(sJPEGError,[cinfo^.err^.msg_code]);
end;
 

где

 sJPEGError = 'JPEG error #%d';
 

вы можете попытаться перехватить ошибку EJPEG и проверить наличие # 53 в сообщении.

Поскольку EJPEG наследуется от EInvalidGraphic, вы можете просто перехватить его с помощью

 catch
  on E: EInvalidGraphic do
  begin
    ShowMessage('Image file is corrupted.')
  end;
end;
 

Комментарии:

1. Файлы JFIF / JPEG можно проверить на неполноту: EOI должен появиться сегмент . Кроме того, повреждение файла не ограничивается неудачными загрузками.

Ответ №2:

Это происходит с одним изображением в формате jpeg или со всеми файлами jpeg, которые вы пытаетесь использовать?

Ошибка JPEG # 53 ошибка появится из-за нехватки памяти.

Если файл поврежден, может возникнуть эта ошибка.

Таким образом, открытие этого изображения в paint или photoshop и повторное сохранение его в формате jpeg может решить проблему.

Ответ №3:

У меня также была ошибка # 53. Оказалось, что ошибка возникла только после того, как я ошибочно сохранил растровое изображение с расширением * .jpg . Очевидным решением было превратить это растровое изображение в формат jpeg и сохранить его затем :-).

Ответ №4:

Пожалуйста, попробуйте выполнить следующее, чтобы решить «ошибку JPEG # 53», если она возникает при этом утверждении TImage.Picture.LoadFromFile('File.jpg')

 TImage.Picture.Bitmap.LoadFromFile('File.jpg');
 

Обратите внимание, что файл File.jpg должно существовать в указанном месте.

Комментарии:

1. Это просто неправильно. Как можно TBitmap ожидать загрузки JPEG? TBitmap может загружать, хм, растровые изображения. [хотя отрицательный результат не мой]

Ответ №5:

моя проблема решена с помощью TAdvPicture componenet.

Комментарии:

1. Не могли бы вы упомянуть, как вы решили свою проблему с помощью TAdvPicture, я также получаю ошибку аналогичного типа, но изображение вообще не повреждено. Я могу просматривать данные изображения в SQLite и правильно извлекать изображение в другом программном обеспечении. Не уверен, почему я получаю JPEG Error #53

2. TAdvPicture просто не вызовет ошибку, он отобразит изображение как можно лучше, а затем остановится. Я также вернулся к этому в качестве решения, поскольку я не могу остановить ошибку с помощью попытки… Кроме того, и я действительно не хочу менять код в Vcl. TAdvPicture является компонентом программного обеспечения TMS (это не реклама)

3. Если кому-то нужен компонент, можно было бы найти, если бы вы правильно решили эту проблему с достаточным объяснением, а затем рассказали о каком-то компоненте, у меня не было проблем, но это: вы просто описали проблему как вопрос, и вдруг вы находите компонент, и SHAZAM что-нибудь просто работает!!! Здесь это неправильно.

4. Даже не связывая компонент: 1.3 от 2003 и 10.7 от 2022

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Joyetech evic primo atomizer short как исправить
  • Joy play loading error
  • Jovyatlas коды ошибок
  • Joptionpane error message
  • Joomshopping как изменить шаблон

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии