Forum: PC Hard- und Software Brauche Tool um automatisch 360 rotierte Bilddateien zu erzeugen (für jeden Winkel eine)


von Emil G. (balsamico)


Lesenswert?

Hallo ihr,

dieses Semester mache ich einen LabView Kurs. Wir sollen irgendein 
Projekt verwirklichen, das wird dann benotet. Der Dozent sieht hier 
gerne Spiele weil es alles andere schonmal gab, hab ich mir sagen 
lassen.

Für mein Projekt muss ich ein Bild rotieren lassen können. Am Besten 
verwirkliche ich das wohl in einem Pict Ring glaube ich. Dafür bräuchte 
ich das Bild in 360 Varianten, sprich Dateien -für jeden Winkel eine. 
Nun will ich nur ungerne 4 Stunden sitzen und das Bild mit Gimp immer um 
1° drehen und abspeichern sondern hoffe, dass es dafür ein Tool gibt. 
Kennt jemand von euch eines vielleicht?

Falls jemand eine andere Idee hat ist diese herzlich willkommen :). Gibt 
es vielleicht eine DLL, die das zur Laufzeit machen könnte? (Man kann 
ich LabView DLLs einbinden)

Am Rande, falls es jemanden interessiert. Meine Idee ist es ein 
Hovercraft-Spiel aus der Vogelperspektive zu machen. Ich habe sowas 
schonmal gemacht in C++/OpenGL und das fetzt. Das wird dem Dozenten 
gefallen und ich weiß schon wie ich an die Sache herangehen muss. Ein 
Hovercraft kann man ja drehen, es fährt aber trotzdem noch in die 
gleiche Richtung weiter wenn man nicht beschleunigt. So kann man klasse 
driften, man muss beim Steuern im Kopf die Trägheit schon im Voraus 
berechnen um perfekt zu fahren, wenn man zu schnell wird, wird es zu 
schwierig genau genug zu fahren... usw... -macht Spaß auf jeden Fall. 
Entweder muss man dann auf einer freien Fläche gegen die Zeit Punkte 
einsammeln oder evtl. mach in einen RaceTrack in dem man Bestzeiten 
fahren muss. Nur leider die Geschichte in diesem umständlichen 
LabView... Naja, muss...

Vielen Dank schonmal!

: Bearbeitet durch User
von Theor (Gast)


Lesenswert?


von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Imagemagick

convert -rotate "1" in.jpg out.jpg

von Emil G. (balsamico)


Lesenswert?

Theor schrieb:
> Ein Tool? https://opencv.org/

Danke. Aber das ist ja eine Library. Damit müsste ich das Tool selber 
schreiben.

von ich bin es (Gast)


Lesenswert?

eben!

von foobar (Gast)


Lesenswert?

Mit ImageMagick (convert -rotate) lässt sich das automatisieren.

> Dafür bräuchte ich das Bild in 360 Varianten, sprich Dateien - für
> jeden Winkel eine.

Das nenn ich eine sehr beschränkte Sichtweise von "jeden Winkel" ;-)

von Emil G. (balsamico)


Lesenswert?

Rufus Τ. F. schrieb:
> Imagemagick
>
> convert -rotate "1" in.jpg out.jpg

YESSSS!!! Genau sowas! Und schnell ging das. Das Forum ist echt klasse. 
Ich freue mich :) Danke dir!

von Wolfgang (Gast)


Lesenswert?

Emil G. schrieb:
> Für mein Projekt muss ich ein Bild rotieren lassen können. Am Besten
> verwirkliche ich das wohl in einem Pict Ring glaube ich. Dafür bräuchte
> ich das Bild in 360 Varianten, sprich Dateien -für jeden Winkel eine.
> Nun will ich nur ungerne 4 Stunden sitzen und das Bild mit Gimp immer um
> 1° drehen und abspeichern sondern hoffe, dass es dafür ein Tool gibt.

"Semester" hört sich nach Student an.
Da sollte dir eigentlich klar sein, dass ein Kreis gewisse Symmetrien 
besitzt, die man bei solchen Aufgabe nutzen kann. Ein Hotkey für 
90°-Rotation besitzt fast jedes Programm.

von Emil G. (balsamico)


Lesenswert?

foobar schrieb:
>> Dafür bräuchte ich das Bild in 360 Varianten, sprich Dateien - für
>> jeden Winkel eine.
>
> Das nenn ich eine sehr beschränkte Sichtweise von "jeden Winkel" ;-)

Das musstest du loswerden ja? ;)



Wolfgang schrieb:
> "Semester" hört sich nach Student an.
> Da sollte dir eigentlich klar sein, dass ein Kreis gewisse Symmetrien
> besitzt, die man bei solchen Aufgabe nutzen kann. Ein Hotkey für
> 90°-Rotation besitzt fast jedes Programm.

Die Rotation soll ja zur Laufzeit geschehen. Und ich brauche 
1°-Rotationen. Und mein Programm besitzt noch garnichts weil ich damit 
noch nicht angefangen habe. Per Hotkey lässt sich das Problem nicht 
lösen, nein.


Wohl aber mit Imagemagick das rufus und foobar genannt haben. Ist 
erledigt. Danke nochmal.

von Bernd K. (prof7bit)


Lesenswert?

Emil G. schrieb:
> Die Rotation soll ja zur Laufzeit geschehen.

Wen Du es eh im Speicher hast weil Du gleich irgendwas damit machen 
willst (was eigentlich?) kannst Du es doch auch noch schnell passend 
rotieren, das sollte doch schneller gehen als ein externes Tool zu 
bemühen und die Festplatte vollzufüllen mit 360 temporären Bildchen für 
jedes Bild?

Und wenn Du eh (wie Du schriebst) OpenGL nutzt für Dein Spiel kannst Du 
doch die Grafikkarte das Bild in jeden beliebigen Winkel darstellen 
lassen und musst Dich um gar nichts kümmern!?

: Bearbeitet durch User
von Emil G. (balsamico)


Lesenswert?

Bernd K. schrieb:
> Emil G. schrieb:
>> Die Rotation soll ja zur Laufzeit geschehen.
>
> Wen Du es eh im Speicher hast weil Du gleich irgendwas damit machen
> willst (was eigentlich?) kannst Du es doch auch noch schnell passend
> rotieren, das sollte doch schneller gehen als ein externes Tool zu
> bemühen und die Festplatte vollzufüllen mit 360 temporären Bildchen für
> jedes Bild?
>
> Und wenn Du eh (wie Du schriebst) OpenGL nutzt für Dein Spiel kannst Du
> doch die Grafikkarte das Bild in jeden beliebigen Winkel darstellen
> lassen und musst Dich um gar nichts kümmern!?

Nein nein. Du hast mich falsch verstanden. Weil ich so ein Spiel 
schoneinmal gemacht habe in C++ und OpenGL weiß ich schon wie ich die 
das grob realisiere. Dieses Mal mus ich es aber in LabView machen. Ich 
habe rumgesucht aber nichts gefunden, wie man da Bilder rotiert. LabView 
ist keine Programmiersprache. Eher ein gewaltiger Point-And-Click 
Baukasten. Da ist nix mit OpenGL...

Das enzige was vielleicht gehen würde, weil man in LV DLLs einbinden 
kann, die man ja selber in C/C++ schreiben kann, eine Grafikengine in 
eine DLL einzubinden, dort hineingegebene Bilder zu rotieren und wieder 
zurück an das LabView-Programm zu übergeben. Aber wie und ob man da 
Bilder hin und her übergeben kann -puh, keine Ahnung. Gewöhnliche 
Datentypen sind einfach, aber Bildformate.... Falls es möglich wäre, 
dann wäre es für mich zumindest ziemlich heftig, da bin ich mir ziemlich 
sicher. Den Dozenten würde es beeindrucken aber eine 1 gibt es schon für 
viel weniger und ich habe nicht vor ein LV-Profi zu werden.

von Jim M. (turboj)


Lesenswert?

Emil G. schrieb:
> . Dieses Mal mus ich es aber in LabView machen. Ich
> habe rumgesucht aber nichts gefunden, wie man da Bilder rotiert.

http://www.ni.com/example/26943/en/

Ist aber lahm, weil das auf der GPU erheblich effizienter wäre als für 
die CPU.

von Emil G. (balsamico)


Lesenswert?

Zur Vollständigkeit bzw. für die SuFu...

Weil ich mich mit Batch-Skripten nicht auskenne musste ich grade ganz 
schön rumprobieren, aber jetzt hab ichs. So gehts:


1.
Imagemagick installieren 
http://www.chip.de/downloads/ImageMagick_42777524.html

2.
Eine .bat-Datei erstellen und folgendes hinein kopieren:
1
SETLOCAL ENABLEDELAYEDEXPANSION
2
for /l %%i in (0,1,359) do (
3
 set n=%%i
4
 magick convert -rotate !n! D:\temp\bild.png D:\temp\bild_!n!.png
5
)
6
ENDLOCAL

3.
(0,1,359) bedeutet von 0 bis 359 in 1er-Schritten. Das und die Pfade 
entsprechend anpassen

4.
Die .bat Datei ausführen :)

: Bearbeitet durch User
von Mogler (Gast)


Lesenswert?

Endlich mal jemand, der einen thread auch zu einem Abschluss bringt und 
eine Lösung bereitstellt für andere, die suchen.

Schnell zumachen, damit nicht noch Mist geschrieben werden kann!

von DPA (Gast)


Lesenswert?

Mogler schrieb:
> Schnell zumachen, damit nicht noch Mist geschrieben werden kann!

Nicht so schnell. Nur weil eine Windows-only lösung gepostet wurde ist 
noch lange nicht alles gesagt. Hier noch eine Lösung für alle anderen 
(relevanten) Systeme:
1
#!/bin/bash
2
3
for i in $(seq 1 359)
4
do
5
  convert -rotate $i /tmp/bild.png /tmp/bild_$i.png &
6
done

von Christian M. (Gast)


Lesenswert?

Schau doch mal Prospeed.dll an:

https://www.paules-pc-forum.de/forum/thread/111794-prospeed-dll-version-3-0/

Ist in Assembler geschrieben.

Gruss Chregu

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.