Witam, chciałbym zapytać czy jest możliwość wczytania obrazu ze stringu lub innego ciągu. Czyli np. mam jakiś obraz i wczytuje go do jakiejś zmiennej a później tą zmienną wklejam do jakiegoś widgetu a on wyświetla ten tekst jako mój obraz. Czy coś takiego jest możliwe czy tylko obraz z pliku bezpośrednio ? Dziękuje za odpowiedzi.
Jak dla mnie możesz załadować obraz skąd chcesz do jakiejś tablicy, zdekodować to odpowiednio (rozdzielić na przykład na komponenty r,g,b) a potem wyrysować w widgecie chociażby za pomocą przeciążenia paintEvent
.
Wolałbym jakieś inne rozwiązanie, ponieważ nie mam absolutnie żadnego pojęcia o jakimkolwiek używaniu grafiki, rysowaniu itd. Umiem tylko załadować obraz do widgetu przez przycisk "set Image" w Qt Creator ;d Czy jest jakiś inny sposób
Nie rozumiem problemu. Co to jest za string obrazu? Co przez to w ogóle rozumiesz? Skąd go dostajesz?
czy ty pytasz o dekodowanie base64 (obraz binarny zakodowany w tekście)?
Jeśli tak to:
http://doc.qt.io/qt-4.8/qbytearray.html#toBase64
http://doc.qt.io/qt-4.8/qbytearray.html#fromBase64
QByteArray data = QByteArray::fromBase64(stringBase64);
QImage image = QImage::fromData(data);
label->setPixmap(QPixmap::formImage(image));
Chodzi mi o takie coś:
QFile file( "image.jpg" );
file.open( QIODevice::ReadOnly | QIODevice::Text );
QTextStream ts( &file );
QString string = ts.readAll();
ui.label->loadimage( string );
żebym odczytał tekst z pliku do zmiennej a potem go załadował na ekran.
EDIT: Po wykonaniu takiego kodu:
QFile image( "image.jpg" );
image.open( QIODevice::ReadOnly | QIODevice::Text );
QTextStream ts( &image );
QString binary = ts.readAll();
QByteArray data = QByteArray::fromBase64( QString( binary ).toLatin1() );
QImage fimage = QImage::fromData(data);
ui->IMAGE->setPixmap( QPixmap::fromImage(fimage) );
Obraz się nie ładuje :/
Omg, co Ty wyczyniasz?
O to mi właśnie chodzi, tylko że zamiast filename chciałbym dać zmienną w której jest zawartość tego pliku, zależy mi na tym żeby to było ze zmiennej.
No to opisz problem tak by był on dla kogoś zrozumiały.
W takim razie wysil się troche i popatrz na metody klasy QImage
(konkretnie przyjrzyj się wszystkim wersjom loadFromData()
)
x napisał(a):
W takim razie wysil się troche i popatrz na metody klasy
QImage
(konkretnie przyjrzyj się wszystkim wersjomloadFromData()
)
Dziękuje, o to mi chodziło :D