يضم AppStudio Framework مصفوفة من الوظائف لكل من استخراج المعلومات من الصور وتعديلها في التطبيق.
كائنات الصورة
يمكن عرض الصور في تطبيق من خلال استخدام كائن صورة، وهو ما يمكنه لاحقًا دعم مزيد من المعلمات لتبديل عرض الصورة. توفر خاصية source موقع الصورة المطلوب عرضها، في حين أن الخصائص الأخرى توضح طرق عرض الصورة. تعرض عينة الكود التالية صورة محددة بطريقة تمنع نسبة العرض إلى الارتفاع وتقوم بالمحاذاة مع المركز الأفقي والرأسي لعنصر المخطط الموجود فيه:
تعرض عينة الكود صورة محددة بطريقة تمنع نسبة العرض إلى الارتفاع وتقوم بالمحاذاة مع المركز الأفقي والرأسي لعنصر المخطط الموجود فيه:
Image {
fillMode: Image.PreserveAspectFit
source: "Example.png"
horizontalAlignment: Image.AlignHCenter
verticalAlignment: Image.AlignVCenter
cache: false
}
}
لمزيد من التعامل المُعقّد مع الصور، يوفر مكون ImageObject عددًا من الأدوات لفحص خصائص الصورة أو تحويلها. يُخزّن ImageObject صورته الخاصة بشكل افتراضي. توضح عينة الكود التالية توصيل ImageObject بصورة معروضة متوفرة في مكان آخر:
//Create ImageObject instance
ImageObject {
id: imageObject
}
Image {
id: displayedImage
fillMode: Image.PreserveAspectFit
source: imageObject.url //Set source to URL housed by ImageObject
horizontalAlignment: Image.AlignHCenter
verticalAlignment: Image.AlignVCenter
cache: false
}
}
تستخدم عينة الكود وظيفة rotate في ImageObject بزرّين اثنين لاستدارة الصورة تسعين درجة في كل اتجاه.
Button {
text: "Rotate Left"
onClicked: {
imageObject.rotate(-90); //Rotates 90 degrees left
displayedImage.refresh(); //Refreshes displayed image
}
}
Button {
text: "Rotate Right"
onClicked: {
imageObject.rotate(90); //Rotates 90 degrees right
displayedImage.refresh(); //Refreshes displayed image
}
}
يوجد لدى ImageObject عدد من الوظائف بأسماء متشابهة، والتي عادةً ما لا تختلف إلا في الصيغة، مثل mirror وmirrored. في هذه الحالات، يوجد اختلاف في السلوك. تُجري الوظائف ذات أسماء صيغة الحاضر التغييرات مباشرةً على كائن الصورة الحالي، في حين أنه تُجري الوظائف ذات أسماء صيغة الماضي التغييرات على نسخة من كائن الصورة.
بيانات Exif التعريفية
قد تتضمن الصور أيضًا بيانات Exif التعريفية، وهي سلسلة من العلامات التي تحتوي على معلومات عن الصورة نفسها. تتوفر الكثير من هذه البيانات التعريفية تلقائيًا في الصورة الملتقطة بواسطة كاميرات حديثة، وقد تتضمن معلومات GPS لوصف موقع التقاط الصورة. يتمكن AppStudio Framework من قراءة هذه العلامات والكتابة فيها باستخدام مكون ExifInfo.
يمكن أن يتعامل AppStudio Framework مع أنواع علامة Exif الثلاثة التالية:
- علامات الصورة، مثل الدقة والتاريخ ووقت الإنشاء والوصف
- العلامات الممتدة، مثل مصدر الإضاءة وسرعة مصراع الكاميرا ووضع التعرُّض
- علامات GPS، مثل دائرة العرض والسرعة ومرجع إسناد الخريطة
تعرض عينة الكود التالية كيفية عرض علامات Exif المأخوذة من صورة محددة من خلال مربع حوار ملف، وهو ما يمكن إعادة كتابته لاحقًا. تستخدم هذه العينة دائرة عرض وخط طول، ويمكن تعديل الارتفاع للبيانات التعريفية الأخرى. FileDialog { //Creates a platform-agnostic file choosing dialog
id: loadDialog
title: "Load Image"
selectExisting: true
selectMultiple: false
nameFilters: [ "Image files (*.jpg *.png)", "All readable formats (All files (*)" ]
folder: Qt.platform.os == "ios"
? "file:assets-library://"
: AppFramework.standardPaths.standardLocations(StandardPaths.PicturesLocation)[0]
onAccepted: {
exifInfo.load(fileUrl);
}
}
ExifInfo { //Instantiates ExifInfo
id: exifInfo
}
ColumnLayout {
anchors {
fill: parent
margins: 10
}
TextField {
text: exifInfo.gpsLatitude
font.bold: true
}
TextField {
text: exifInfo.gpsLongitude
font.bold: true
}
TextField {
text: exifInfo.gpsAltitude
font.bold: true
}
Button {
text: "Load"
onClicked: {
loadDialog.open();
}
}
}