Artekp999 Temat założony przez niniejszego użytkownika |
[SFML] Skalowanie obrazka i zapisanie go » 2013-06-25 13:05:43 Mam program który co kilkadziesiąt sekund robi zrzut ekranu i zapisuje go w postaci BMP. Dosyć długo nie mogłem sobie poradzić z konwersją do JPEG, ale w końcu z pomocą przyszedł mi SFML 2.0 sf::Image obraz; obraz.loadFromFile( "zrzut.bmp" ); obraz.saveToFile( "zrzut.jpg" );
Na Spritach i Texturach umiem wyskalować ale później nie mogę zapisać tego do pliku. Czytałem manuala ale nie znalazłem rozwiązania. |
|
pekfos |
» 2013-06-25 13:21:00 Wczytaj jako teksturę, zrób sprajta, wyskaluj, wyświetl na RenderTexture, skopiuj do Image i zapisz. Prościej się chyba nie da. |
|
Artekp999 Temat założony przez niniejszego użytkownika |
» 2013-06-25 13:54:04 Mam taki kod. #include <SFML/Graphics.hpp>
int main() { sf::Texture tekstura; tekstura.loadFromFile( "bitmapa.bmp" ); sf::Sprite obrazek; obrazek.setTexture( tekstura ); obrazek.setScale( 0.5, 0.5 ); }
Zatrzymałem się na punkcie wyświetl na RenderTexture, mogę dostać jakiś przykład tak to zrobić??? |
|
pekfos |
» 2013-06-25 14:02:00 Utwórz obiekt sf::RenderTexture i na nim wyświetl sprajta. Odpowiedź nie zwalnia Cię z szukania szczegółów w dokumentacji. Podałem wszystkie potrzebne nazwy. Nic, tylko wyszukać.. |
|
Artekp999 Temat założony przez niniejszego użytkownika |
» 2013-06-25 14:22:00 Napisałem taki program, lecz jest bardzo nie optymalny według mnie ponieważ za każdym razem uruchamia się okienko, a skalowanie dopasowane jest do konkretnej rozdzielczości ekranu. #include <SFML/Graphics.hpp>
int main() { sf::RenderWindow oknoAplikacji( sf::VideoMode( 840, 525, 32 ), "" ); sf::Texture tekstura; tekstura.loadFromFile( "bitmapa.bmp" ); sf::Sprite obrazek; obrazek.setTexture( tekstura ); obrazek.setScale( 0.5, 0.5 ); oknoAplikacji.draw( obrazek ); sf::Image zrzutEkranu = oknoAplikacji.capture(); zrzutEkranu.saveToFile( "zrzut-ekranu.png" ); return 0; }
|
|
pekfos |
» 2013-06-25 14:27:46 sf::RenderWindow to nie sf::RenderTexture. |
|
Artekp999 Temat założony przez niniejszego użytkownika |
» 2013-06-25 14:58:40 #include <SFML/Graphics.hpp>
int main() { sf::RenderTexture oknoAplikacji; sf::Texture tekstura; tekstura.loadFromFile( "bitmapa.bmp" ); sf::Sprite obrazek; obrazek.setTexture( tekstura ); obrazek.setScale( 0.5, 0.5 ); oknoAplikacji.create( 800, 600 ); oknoAplikacji.draw( obrazek ); oknoAplikacji.getTexture().copyToImage().saveToFile( "123.png" ); return 0; }
Tylko obrazek muszę jeszcze w pionie lub poziomie przerzucić. Ten problem rozwiązany, tylko zrodził się inny strasznie zjechało to po jakości. |
|
pekfos |
» 2013-06-25 15:30:48 A czego się spodziewałeś? To nie jest dobre rozwiązanie, do programu szpiegującego użytkownika.. |
|
« 1 » 2 |