JPG, canvas i zapis zmiany

0

Witam

var
Bmp: TBitmap;
begin
  Bmp:= TBitmap.Create; 
    Bmp.Assign(obraz.Picture.Graphic);
     Bmp.Canvas.TextOut(obraz.Picture.Height div 2,obraz.Picture.Width div 2, '1234567890'); 
      Bmp.Canvas.Font.Color:=clRed;
     Bmp.Canvas.Font.Size:=25;
   obraz.Picture.Graphic.Assign(Bmp); //obraz - TjvImage
 Bmp.Free;
end;

Napisałem taki kod, który powinien wpisać tekst '1234567890' na środku obrazka JPG.
Niestety po kliknięciu na Button, obrazek tylko mignie a napisu nie ma.
Hmm co tu mam źle?
Druga sprawa, chciałbym potem tego JPG zapisać bez utraty jakości.

Dzięki za sugestie.

0
  1. to nie jest wypisanie tekstu na srodku, tylko tak, ze lewy gorny rog tekstu bedzie tam, gdzie srodek obrazka.
  2. moze nie powinienes zwalniac tej bitmapy ? Czy assign() kopiuje jej zawartosc ?
  3. JPG wlasnie po to jest, zeby zapisywac cos z utrata jakosci... zeby mniej zajmowalo. Bez utraty jakosci mozesz zapisac w BMP, PNG... No chyba, ze chodzilo Ci o JPG z minimalnym wspolczynnikiem kompresji.
0

a po co te akcje z tworzeniem nowej bitmapy?
image1.canvas.textout()
image1.picture.bitmap.savetofile() powinno dzialac.

0
image1.canvas.textout()
image1.picture.bitmap.savetofile() powinno dzialac.

Już tak próbowałem dawno. Wyskakuje błąd, że tylko na BMP można coś działać.

Zrobiłem takie coś że zapisuje do bmp odczytanego jpg i do niego dodaje napis, jednak ta bmp za jmuje np. 12MB przy 600kb jpgu.

Jeszcze musze przegooglować zapis znów do jpg bez straty jakości.

0

Jeżeli chodzi Ci o uzyskanie samego efektu, to przeglądarka grafiki IrfanView takie coś umożliwia. I to na masową skale.
Ale jeżeli mierzysz się z kodowaniem tego problemu, to marna moja wskazówka. ;)

0

Jeżeli chodzi Ci o uzyskanie samego efektu, to przeglądarka grafiki IrfanView takie coś umożliwia. I to na masową skale.

Chyba trafiłeś. :)
Ogólnie chciałem zrobić program, który będzie mi pisał datę utworzenia zdjęcia i zapisywał, dlatego, że mam cyfrówkę bez datownika. :)
Używam IrfanView i jeśli ma taką opcję to spoko by było, jednak jako raczkujący koder chciałem sam takie coś wykonać. Ot taka moja ambicja.

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