Tällä koodilla onnistuu kääntäminen, kaikki muu paitsi että Image2 skaalaus ei pure, vaan kuvasta tulee vain osa näkyviin ikkunaan, joka on oikean kokoinen ja oikeassa asennossa.
procedure TForm1.bRotateClick(Sender: TObject);
const
Tmp1 = 'f:\apu\pic1.jpg';
Tmp2 = 'f:\apu\pic2.jpg';
var
F: file;
begin
{ WinExec('g:\dlp4\jpeg\JPEGTRAN.EXE -rotate 90 F:\Foto\00-Kokeilu\Juho.jpg Juhop.jpg',SW_SHOW); }
{Huom! JPEGTRAN on 16 bittinen ja hyväksyy vain lyhyet nimet; esim 00-Kokeilu ei käy }
Image1.Picture.SaveToFile(Tmp1);
AssignFile(F,Tmp1);
repeat
{$I-}
Reset(F);
{$I+}
until IOResult = 0;
CloseFile(F);
WinExec('g:\dlp4\jpeg\JPEGTRAN.EXE -rotate 90 F:\apu\Pic1.jpg F:\apu\Pic2.jpg',SW_SHOW);
AssignFile(F,Tmp2);
repeat
{$I-}
Reset(F);
{$I+}
until IOResult = 0;
CloseFile(F);
Image2.Picture.LoadFromFile(Tmp2);
if Image2.Picture.Width>Image2.Picture.Height then
begin
Image2.Height := DiS2;
Image2.Width := DiS1;
end
else
begin
Image2.Height := DiS1;
Image2.Width := DiS2;
end;
Image2.Picture.SaveToFile(trnNimi);
{ Myös seuraava toimii, mutta on hidas }
(* with Image1.Picture do begin
for i := 1 to Width do begin
for j := 1 to Height do begin
Image2.Canvas.Pixels[i-Image1.Top,j-Image1.Left] := Canvas.Pixels[j,i];
end; {for j}
end; {for i}
end; {with Canvas}
Image2.Picture.SaveToFile(FotoDir+'\'+'KokAjk.bmp'); *)
{ ShowMessage('Kuva valmis'); }
end;
Tällä koodilla onnistuu myös, mutta hidas
procedure TForm1.bKokClick(Sender: TObject);
var
i,j: integer;
begin
jpgNimi := PictureList.Items.Strings[0];
Image1.Picture.LoadFromFile(FotoDir+'\'+jpgNimi);
if Image1.Picture.Width>Image1.Picture.Height then
begin
Image1.Height := DiS2;
Image1.Width := DiS1;
Image2.Height := DiS1;
Image2.Width := DiS2;
end
else
begin
Image1.Height := DiS1;
Image1.Width := DiS2;
Image2.Height := DiS2;
Image2.Width := DiS1;
end;
Image1.Refresh;
with Image1.Picture do begin
for i := 1 to Width do begin
for j := 1 to Height do begin
Image2.Canvas.Pixels[i-Image1.Top,j-Image1.Left] := Canvas.Pixels[j,i];
end; {for j}
end; {for i}
end; {with Canvas}
end;
DOSissa toimii juuri kuten pitääkin (ja nopeasti):
JPEGTRAN -rotate 90 juho.jpg juhop.jpg
Tämän jos saisi Delphin sisälle, olisi homma selvä
Nämä tällaisenaan eivät toimi:
WinExec('JPEGTRAN.EXE -rotate 90 jpgNimi jpgName',SW_SHOW);
WinExec('JPEGTRAN.EXE -rotate 90 f:\foto\00-Kokeilu\Juho.jpg Juhop.jpg',SW_SHOW);
Kokeilu:
WinExec('g:\dlp4\jpeg\JPEGTRAN.EXE -rotate 90 f:\foto\00-Kokeilu\Juho.jpg Juhop.jpg',SW_SHOW);
Virheilmoitus: G:\DLP4\JPEG\JPEGTRAN.EXE: can't open f:\foto\00-Kokeilu\Juho.jpg
WinExec('g:\dlp4\jpeg\JPEGTRAN.EXE -rotate 90 F:\Foto\00Kok\Juho.jpg F:\Foto\00Kok\Juhop.jpg',SW_SHOW);
toimii {ero nimien pituuksissa; JPEGTRAN on 16-bittinen ja siis lyhyet nimet}
Seuraava on käytössä ja toimii oikein.
WinExec('g:\dlp4\jpeg\JPEGTRAN.EXE -rotate 90 F:\apu\Pic1.jpg F:\apu\Pic2.jpg',SW_SHOW);
Tässä vielä linkki AutoPic ohjelmalla tuotetulle kuvasivulle
ap2html1.htm
ja tässä AJKn Foto ohjelmalla tuotettuun sivustoon
../vaari/1998-joulu/Joulu-1998-00.htm
Asko Korpela 981205 (981204) o Asko.Korpela@kolumbus.fi o AJK kotisivu