Error class EJPEG - problem z zapisem obrazka

0

Project Project1.exe raised exception class EJPEG with message 'JPEG error #53'

O co chodzi z tym errorem? wczytalem obrazek, odwrocilem go w pionie i poziomie a potem zapisalem i jak chce go teraz otworzyc to ten error mi wyskakuje.. Prosze o pomoc :(

0

a jak go zapisales ?? Moze jako BMP

0

wlasnie z zapisem tez jest dziwnie, kombinowalem na wszystkie sposoby jak zapisac plik i nie dziala jak powinno :/

procedure TForm1.Zapisz1Click(Sender: TObject);
begin
 Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
end;

procedure TForm1.Zapiszjako1Click(Sender: TObject);
begin
 if SavePictureDialog1.Execute then Image1.Picture.SaveToFile(OpenPictureDialog1.FileName)
end;

kazdy plik ktory edytowalem w moim programie nie zapisuje sie poprawnie, temu nie mozna go otworzyc, ale czemu? To ja nie wiem :/

0

sluchaj... nie mozesz o wszystko pytac na forum. podstaw musisz nauczyc sie sam.
nie jestes pierwszy ktory sie uczy, przed Toba bylo na tej planecie pare milionow osob ktore uczylo sie delphi i napotykalo te sam problemy, wiec latwo sie domyslec ze 90% z nich jest juz gdzies w interneci, wiec... szukaj!
o zapisywaniu plikow jako jpegi masz chyba nawet w faq.

0

Robie juz moj projekt lacznie 9h (od wczoraj) znajac malutkie podstawy. Dzieki temu forum juz praktycznie skonczylem wszystko (jestem wam wdzieczny za to), zostal mi ten cholerny zapis, przy ktorym spedzilem najwiecej czasu.
Akurat co do tego to ciezko jest znalezc w internecie jak to zrobic.

To juz bedzie ostatnie pytanie, wiem - robie sie upierdliwy, natretny, zly itp :P

Co do faq, jakis czas temu znalazlem dosyc ciekawy sposob na zapis pliku, ale procedura ta najpierw pobiera plik z OpenDialog, potem kompresuje plik i go zapisuje w bmp i jpg (do wyboru). Tu pytanie, w jaki sposob mozna ja przerobic zeby pobierala obrazek z Image1.Picture i zapisywala go poprawnie? Ciagle puste pliki mi powstaja :/

Tu jest kod tej procedury:

procedure TForm1.Zapiszjako1Click(Sender: TObject);
var
  Bitmap : TBitmap;
  JPG : TJPEGImage;
begin
  Bitmap := TBitmap.Create;
  try
  { w przypadku, gdy użytkownik wybierze w oknie plik BMP }
    if OpenDialog1.Execute then
    begin
    { załaduj do klasy }
      Bitmap.LoadFromFile(OpenDialog1.FileName);
    { miniaturkę wyświetl również w komponencie TImage }
      Image1.Picture.Bitmap.Assign(Bitmap);
     { utwórz klasę }
      JPG := TJPEGImage.Create;
      try
      { przypisz obrazek z klasy TBitmap }
        JPG.Assign(Bitmap);

        if SaveDialog1.Execute then
        { zapisanie już skompresowanego obrazka }
          JPG.SaveToFile(SaveDialog1.FileName);
      finally
        JPG.Free;
      end;
    end;
  finally
    Bitmap.Free;
  end;
end;
0

w skrócie to będzie tak: na podstawie przykładu który sam znalazłeś resztę sobie dopasujesz

JPG := TJPEGImage.Create;
JPG.assign(image1.picture.bitmap); // tu przypisuje sie bitmape z TIMAGE do obiektu typu JPEG
JPG.SaveToFile('Plik 1.jpg');
JPG.free;
0

jestes wielkli :D usilowalem zrobic ze uzytkownik podaje sciezke zapisu, widac niepotrzebnie, ale to tez moze byc ;d
dodalem msgbox i jest OK :D
"Application.MessageBox('Plik zostal zapisany do: ..\RAD Studio\Projects\Plik 1.JPG', 'Informacja');"

1 użytkowników online, w tym zalogowanych: 0, gości: 1