2012-06-13 8 views
6

어떻게 QML 이미지를 전화 메모리에 저장할 수 있습니까 ??QML 이미지 저장

또한 이미지를 저장할 수있는 경우 이미지에 텍스트를 추가해야하는 경우가 있습니다. (텍스트가있는 투명한 이미지가있는 것처럼 상상해 볼 수 있습니다.) 두 번째 이미지 위에 놓습니다. , 마침내 우리는 전화 메모리에 저장할 수있는 하나의 이미지를 가지고 있습니다.)

답변

7

아니요 Image에서 직접. QDeclarativeImagepixmap, setPixmappixmapChange 방법을 가지고 있지만 어떤 이유로 인해 신고 된 속성이 없습니다. 따라서 fom qml을 사용할 수 없습니다. 불행히도 C++에서 사용할 수 없습니다. 개인용 Calsss입니다.

당신이 할 수있는 일은 그래픽 항목을 귀하의 픽스맵에 페인트하여 파일로 저장하는 것입니다.

class Capturer : public QObject 
{ 
    Q_OBJECT 
public: 
    explicit Capturer(QObject *parent = 0); 
    Q_INVOKABLE void save(QDeclarativeItem *obj); 
}; 

void Capturer::save(QDeclarativeItem *item) 
{ 
    QPixmap pix(item->width(), item->height()); 
    QPainter painter(&pix); 
    QStyleOptionGraphicsItem option; 
    item->paint(&painter, &option, NULL); 
    pix.save("/path/to/output.png"); 
} 

등록 "취득 부"컨텍스트 변수 :

int main() 
{ 
    // ... 
    Capturer capturer; 
    QmlApplicationViewer viewer; 
    viewer.rootContext()->setContextProperty("capturer", &capturer); 
    // ... 
} 

그리고 당신의 QML에서 사용 : 당신이 당신의 QML에서 바로 그것을 할 수 5.4+ Qt를 가진

Rectangle { 
    // ... 
    Image { 
     id: img 
     source: "/path/to/your/source" 
    } 
    MouseArea { 
     anchors.fill: parent 
     onClicked: { 
      capturer.save(img) 
     } 
    } 
} 
+0

감사합니다. 이제 Qt에서 2 개의 이미지를 병합하는 방법을 찾으십시오. 도와 주실 수 있습니까? – Bayan

+0

어떻게 2 개의 QQuickItem을 오버레이/병합하고 이미지에 저장합니까? –