Obrót obrazu TImage w lewo

0

Hej

mam oto taki kodzik i chcę przyśpieszyć jego działanie...
jakieś sugestie?

[code]
var
polowa_wysokosci : integer;
x, y : integer;
kolor1 : TColor;
kolor2 : TColor;
begin
Image1.Picture.LoadFromFile(FileListBox1.FileName);
polowa_wysokosci := (Image1.picture.Height-1) div 2;
for y:=0 To polowa_wysokosci Do
for x:=0 To Image1.picture.Width-1 Do
begin
kolor1 := Image1.picture.bitmap.Canvas.Pixels[x,y];
kolor2 := Image1.picture.bitmap.Canvas.Pixels[x,Image1.picture.Height-1-y];
Image1.picture.bitmap.Canvas.Pixels[x,y] := kolor2;
Image1.picture.bitmap.Canvas.Pixels[x,Image1.picture.Height-1-y] := kolor1;
end;
end;
[/code]

pozdrawiam serdecznie :)

1
lemo1029 napisał(a):

jakieś sugestie?

  1. Zadaj pytanie to może ktoś będzie w stanie na nie odpowiedzieć
  2. scanline
1

Jak już wklejasz gotowy znaleziony przykład to wiedz że potrzebny jest kod procedury TransformAndDraw którego nie raczyłeś wkleić i powiem tylko tyle pomyśl co się stanie jak się zmieni znak ostatniego jej parametru.
2.
http://4programmers.net/Delphi/gotowce/ScanLine_-_kontrast,_nasycenie,_negatyw,_przyciemnienie,_rozja%C5%9Bnienie,_rozmycie,_sepia,_skala_szaro%C5%9Bci,_wykucie,wyp%C5%82owienie,_zamiana_RGB_i_inne...

0

Dziękuję za odpowiedzi ale głębiej poszukałem na forum i znalazłem rozwiązanie ale każda z waszych wypowiedzi może być pomocna :)
pozdrawiam

0

Więc jeśli mogę oczekiwać na waszą pomoc może dacie mi jakieś rady dot. operacja na jpg?
Bo chce umieścić tak, aby także te formaty można było obracać, odbijać lustrzanie oraz przybliżać :)
oraz jakiś sposób abym mógł wstawić pokaz slajdów :)

i ostatni problem, który mi się nasunął.
Problem polega na tym, że mam obracanie na 2 buttonach (lewo i prawo) i jedynie raz obraca plik, dalsze naciskanie nic nie daje.
I jeżeli w mojej formule mam wprowadzony kod na konwersje to nie obraca mi plików bmp.
Pomyślałem o sprawdzaniu rozszerzenia plików, a następnie pętelka if.
Ale niestety nie mam pojęcia jak się zabrać za formułę sprawdzenia rozszerzenia pliku.
Więc oczekuję przyjaznych dla mnie amatora odpowiedzi ;)

bless you all ;)

0

obracać, odbijać lustrzanie oraz przybliżać

Do tego wszystkiego masz kody w internecie; w tym jest także jeden ciekawy artykuł na 4p o operacjach na Canvas/TBitmap (saturacja, obrót itp.)

jakiś sposób abym mógł wstawić pokaz slajdów

Obrazy wczytywać do tablicy; po naciśnięciu strzałki lub buttona "w lewo" po prostu zmniejszać licznik i wyświetlić obraz znajdujący się tam w tablicy. Analogicznie w prawo - należy zwiększyć licznik i wyświetlić obraz z tablicy.

Pomyślałem o sprawdzaniu rozszerzenia plików

Od tego są nagłówki plików, a nie ich rozszerzenia jeżeli już musisz sprawdzać...

Ale niestety nie mam pojęcia jak się zabrać za formułę sprawdzenia rozszerzenia pliku.

Nagłówek za pomocą BlockRead; samo rozszerzenie za pomocą ExtractFileExt.

1

Więc oczekuję przyjaznych dla mnie amatora odpowiedzi

Bo nie mamy działu newbie.

i ostatni problem, który mi się nasunął.
Problem polega na tym, że mam obracanie na 2 buttonach (lewo i prawo) i jedynie raz obraca plik, dalsze naciskanie nic nie daje.

No jak tak zaprogramowałeś to i tak jest, czyż nie?

Pomyślałem o sprawdzaniu rozszerzenia plików, a następnie pętelka if.

Pętelka if? Czyżby jakieś nowe rozszerzenie języka w XE3?

Więc jeśli mogę oczekiwać na waszą pomoc może dacie mi jakieś rady dot. operacja na jpg?

Konwertuj na bitmapę i wtedy operuj. Jak to zrobić masz na www.google.pl

Patryk27 napisał(a)

Od tego są nagłówki plików, a nie ich rozszerzenia jeżeli już musisz sprawdzać...

Pr0hint: Ostatnio przy analizie TImage z Lazarusa odkryłem że on rejestruje 'kodeki' obrazów na podstawie rozszerzeń.

0

Wszystko mi już działa ( zarwana nocka no ale :D), konwersja na jpeg także, ale po konwersji chce obracać bmp to nie działa, a obrazy jpg obraca jedynie o 90st a dalej używając odpowiedniego button-a nie obraca i nadal nie wiem jak sprawdzić nagłówki. I po to mi było if "rozszerzenie" then "konwersja" else "działaj dalej". A po prostu pomyliłem się :D człowiek śpiący etc

1

Analizujesz kod źródłowy Lazarusa? :P

@Patryk27 Czasami mi się zdarza, jak jest z czymś problem (chodzi o topic Timage 16 bitowy PNG ). Zdarza mi się nawet analizować source FPC i robić 'swoje' wersje które omijają pewne bugi które odkryłem a nie ma na nie obejścia (np. heap bug z threadami w DLL).

Wszystko mi już działa

To super, już drugi raz ci wszystko działa.

ale po konwersji chce obracać bmp to nie działa, a obrazy jpg obraca jedynie o 90st a dalej używając odpowiedniego button-a nie obraca i nadal nie wiem jak sprawdzić nagłówki.

To to się nie zalicza do wszystkiego?

I po to mi było if "rozszerzenie" then "konwersja" else "działaj dalej". A po prostu pomyliłem się człowiek śpiący etc

Ja tu nie widzę pętelki if. W ogóle wątpię żeby coś takiego istniało.

No ja ci mogę co najwyżej życzyć powodzenia z takim opisem problemu.

2

-123oho czy ty nie bawisz się w trolla?

Może.

Dziwne by to było, żeby tego nie zrozumieć i czepiasz się słówek

Tak, czepiam się. Nic odkrywczego. I tak geniusze potem postują o 'interfejsie' który dla nas oznacza interface a dla niego klasę TInterface - różnica? W słowie mała, w znaczeniu duża. Dlatego się czepiam, bo opis powinien być pełen, zrozumiały, klarowny i taki sam dla wszystkich. Ale ty po prostu zamiast się poprawić będziesz twierdzić że wiesz lepiej ode mnie, co jest dosyć dziwne, bo ja tutaj mam duży staż a ty żaden nie mówiąc o tym że ja nie pytam o obracanie TImage tylko publikuje np. szyfrator relokacji, co daje do myślenia z różnicą wiedzy między nami. No ale ty wiesz lepiej.

Nic nie pomogłeś i pewnie nie miałeś zamiaru, więc czemu się udzielasz?

Pomogłem ci odkryć że to co piszesz nie ma składu. To czy ci pomogę zależy czy umiesz skorzystać z mojej pomocy.

Już w 1 twoim poście widać brak umiejętności czytania ze zrozumieniem.

Nie tłumacz swojej nieumiejętności pytania moją nieumiejętnością czytania ze zrozumieniem. Odwracasz kota ogonem. Najpierw stwierdzasz że ja się 'czepiam' a teraz że jest ok tylko ja nie umiem czytać?

A z IF-em się pomyliłem, co nie można?

Czy zabroniłem się mylić? Nie, po prostu czepiałem się tego, żeby tobie pokazać że nie umiesz zadawać pytań. I żebyś napisał coś mądrzejszego.

A problem opisałem taki jaki jest.

Tak, to po prostu ja nie umiem czytać, nie ty pisać. Głupie założenie zwłaszcza że ja tutaj jestem od dawien dawna i widziałem więcej niż ty.

PS: skąd wziąłeś to że już drugi raz mi wszystko działa? Jestem tego ciekaw..

1.Dziękuję za odpowiedzi ale głębiej poszukałem na forum i znalazłem rozwiązanie - stwierdziłeś że problem rozwiązany
2.Wszystko mi już działa - znów stwierdziłeś że problem rozwiązany.

0

Ok spoko dyskusja nie ma sensu. Poradzę sobie sam. Cya
Temat proszę usunąć

0
lemo1029 napisał(a):

Poradzę sobie sam.

To po co pytałeś.

Ok spoko dyskusja nie ma sensu.

No jeżeli miałeś zamiar ze mną dyskutować to rzeczywiście nie ma to sensu. Mogłeś natomiast popracować nad pytaniem etc., no ale widać posłuchać mnie nie masz zamiaru. Przeżyję.

Temat proszę usunąć

Kolejny geniusz który sądzi że usuwamy tematy jak leci. Usuwanie postów/tematów jest uznawane za wandalizm jeżeli nie ma wyraźnych przesłanek aby go usuwać.

0

Ok ocho pospinaliśmy się teraz na spokojnie.
Jak mam formułować ładnie to proszę:

Chciałbym jeszcze w kodzie umieścić konwersję jpg do bmp. Kod działający mam.
Ale chciałbym go wstawić tak, abym mógł mieć go pod buttonami obsługi funkcji programu (no obrót odbicie etc). Jak umieszczam go normalnie przestaje mi obracać etc pliki bmp.
I tu zagwostka jak sprawdzić rozszerzenie pliku graf i umieszczenie if-a tak, gdy jest plik jpg to go konwertowało a gdy bmp omijało. stąd ten if.

0

I tu zagwostka jak sprawdzić rozszerzenie pliku graf i umieszczenie if-a tak, gdy jest plik jpg to go konwertowało a gdy bmp omijało. stąd ten if.

if+ExtractFileExt

0
lemo1029 napisał(a)

Jak umieszczam go normalnie przestaje mi obracać etc pliki bmp.

To naprawdę bardzo dużo wyjaśnia...

lemo1029 napisał(a)

Chciałbym jeszcze w kodzie umieścić konwersję jpg do bmp. Kod działający mam.

I tu zagwostka jak sprawdzić rozszerzenie pliku graf i umieszczenie if-a tak, gdy jest plik jpg to go konwertowało a gdy bmp omijało. stąd ten if.

Tak to właśnie jest jak się jedzie na gotowcach z sieci bez wcześniejszej nauki języka z kursu;


Patryk27 napisał(a)

if + ExtractFileExt

To nie wystarczy, porównywanie rozszerzenia trzeba wykonać tak, by nie była brana pod uwagę wielkość liter; Można to wykonać w oparciu o UpperCase/LowerCase lub preściej wykorzystując funkcję SameText;

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