Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML] Skalowanie obrazka i zapisanie go

Ostatnio zmodyfikowano 2013-06-25 17:58
Autor Wiadomość
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

C/C++
// Konwersja
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.
P-86134
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.
P-86135
Artekp999
Temat założony przez niniejszego użytkownika
» 2013-06-25 13:54:04
Mam taki kod.
C/C++
#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ć???
P-86137
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ć..
P-86138
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.

C/C++
#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;
}

P-86139
pekfos
» 2013-06-25 14:27:46
sf::RenderWindow to nie sf::RenderTexture.
P-86141
Artekp999
Temat założony przez niniejszego użytkownika
» 2013-06-25 14:58:40
C/C++
#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.
P-86149
pekfos
» 2013-06-25 15:30:48
A czego się spodziewałeś? To nie jest dobre rozwiązanie, do programu szpiegującego użytkownika..
P-86152
« 1 » 2
  Strona 1 z 2 Następna strona