Rumah hujung hadapan web uni-app Bagaimana untuk menangkap sebahagian daripada skrin dalam uniapp

Bagaimana untuk menangkap sebahagian daripada skrin dalam uniapp

Apr 18, 2023 pm 04:00 PM

Dengan pembangunan Internet mudah alih, semakin banyak aplikasi perlu melaksanakan fungsi tangkapan skrin untuk meningkatkan pengalaman pengguna. Semasa proses pembangunan, uniapp ialah rangka kerja pembangunan merentas platform yang sangat popular Ia menyediakan pelbagai fungsi dan antara muka yang boleh digunakan untuk melaksanakan pelbagai fungsi, termasuk tangkapan skrin. Artikel ini akan memperkenalkan cara uniapp melaksanakan fungsi tangkapan skrin.

1. Prinsip asas tangkapan skrin dalam uniapp

Dalam uniapp, prinsip tangkapan skrin pada asasnya adalah menggunakan antara muka wx.canvasToTempFilePath yang disediakan oleh applet WeChat untuk menangkap sebahagian atau semua skrin Seterusnya jana laluan fail sementara. Kemudian, paparkan menu operasi atau imej pratonton melalui antara muka showActionSheet atau showModal yang disertakan dengan uniapp. Berikut ialah kod untuk contoh tangkapan skrin ringkas:

export default {
  data() {
    return {
      canvasWidth: 0,
      canvasHeight: 0,
      canvasTop: 0,
      canvasLeft: 0
    }
  },
  methods: {
    getCanvas() {
      const query = uni.createSelectorQuery().in(this)
      query.select('#canvas-container').boundingClientRect(data => {
        uni.canvasToTempFilePath({
          x: data.left,
          y: data.top,
          width: data.width,
          height: data.height,
          destWidth: data.width * 2,
          destHeight: data.height * 2,
          canvasId: 'canvas',
          success: res => {
            uni.showActionSheet({
              itemList: ['预览图片', '保存图片'],
              success: res => {
                if (res.tapIndex == 0) {
                  uni.previewImage({
                    urls: [res.tempFilePath]
                  })
                } else if (res.tapIndex == 1) {
                  uni.saveImageToPhotosAlbum({
                    filePath: res.tempFilePath,
                    success: () => {
                      uni.showToast({
                        title: '保存成功!'
                      })
                    },
                    fail: () => {
                      uni.showToast({
                        title: '保存失败!'
                      })
                    }
                  })
                }
              }
            })
          },
          fail: res => {
            uni.showToast({
              title: '生成临时文件路径失败!'
            })
          }
        }, this)
      }).exec()
    }
  }
}
Salin selepas log masuk

Antaranya, mula-mula dapatkan lebar dan ketinggian nod halaman semasa melalui uni.createSelectorQuery().in(this), dan kemudian panggil antara muka uni.canvasToTempFilePath ke Bahagian yang dipintas disimpan dalam bentuk fail sementara. Dalam fungsi panggil balik kejayaan antara muka, gunakan uni.showActionSheet untuk memaparkan menu operasi Pengguna boleh memilih untuk pratonton gambar atau menyimpan gambar ke album tempatan.

Perlu diambil perhatian bahawa untuk melaksanakan fungsi tangkapan skrin, anda perlu menentukan elemen kanvas dalam halaman semasa untuk melukis kandungan yang akan ditangkap. Lebar, tinggi dan kedudukan elemen kanvas perlu dikira secara dinamik untuk menyesuaikan diri dengan saiz dan kedudukan skrin yang berbeza.

2. Langkah-langkah pelaksanaan tangkapan skrin uniapp

Berikut akan memperkenalkan langkah-langkah uniapp untuk melaksanakan tangkapan skrin:

  1. Buat elemen kanvas untuk melukis tangkapan skrin kandungan. Tetapkan kedudukan dan saiz elemen kanvas mengikut kedudukan dan saiz yang anda perlukan untuk memintas. Contohnya:
<canvas id="canvas" style="position: absolute; top: {{canvasTop}}px; left: {{canvasLeft}}px; width: {{canvasWidth}}px; height: {{canvasHeight}}px;"></canvas>
Salin selepas log masuk
  1. Sebelum mendapatkan maklumat nod halaman semasa, anda perlu menetapkan kelewatan dalam fungsi kitaran hayat onReady dalam halaman untuk memastikan bahawa dom telah diberikan.
onReady() {
  setTimeout(() => {
    this.getCanvas()
  }, 500)
},
Salin selepas log masuk
  1. Gunakan uni.createSelectorQuery().in(this) untuk mendapatkan maklumat nod halaman semasa, dan kemudian panggil antara muka uni.canvasToTempFilePath untuk menyimpan bahagian yang dipintas dalam bentuk fail sementara.
const query = uni.createSelectorQuery().in(this)
query.select('#canvas-container').boundingClientRect(data => {
  uni.canvasToTempFilePath({
    x: data.left,
    y: data.top,
    width: data.width,
    height: data.height,
    destWidth: data.width * 2,
    destHeight: data.height * 2,
    canvasId: 'canvas',
    success: res => {
      // ...
    },
    fail: res => {
      uni.showToast({
        title: '生成临时文件路径失败!'
      })
    }
  }, this)
}).exec()
Salin selepas log masuk
  1. Dalam fungsi panggil balik kejayaan antara muka uni.canvasToTempFilePath, gunakan uni.showActionSheet untuk memaparkan menu operasi Pengguna boleh memilih untuk pratonton imej atau menyimpan imej ke album tempatan. Contohnya:
uni.showActionSheet({
  itemList: ['预览图片', '保存图片'],
  success: res => {
    if (res.tapIndex == 0) {
      uni.previewImage({
        urls: [res.tempFilePath]
      })
    } else if (res.tapIndex == 1) {
      uni.saveImageToPhotosAlbum({
        filePath: res.tempFilePath,
        success: () => {
          uni.showToast({
            title: '保存成功!'
          })
        },
        fail: () => {
          uni.showToast({
            title: '保存失败!'
          })
        }
      })
    }
  }
})
Salin selepas log masuk

3 Langkah berjaga-jaga untuk tangkapan skrin uniapp

Dalam proses melaksanakan tangkapan skrin, anda perlu memberi perhatian kepada perkara berikut:

<.>
    Memandangkan uniapp tidak boleh mengendalikan komponen asli secara langsung, apabila memanggil uni.createSelectorQuery().in(this) untuk mendapatkan maklumat nod, kelewatan perlu ditetapkan untuk memastikan dom telah diberikan.
  1. Apabila memanggil antara muka uni.canvasToTempFilePath, anda perlu menentukan parameter canvasId untuk menentukan id elemen kanvas yang akan dipintas.
  2. Apabila melihat pratonton imej atau menyimpan imej ke album setempat, anda perlu menentukan laluan imej, iaitu laluan fail sementara yang dijana oleh antara muka uni.canvasToTempFilePath. Pada masa yang sama, apabila menyimpan gambar ke album tempatan, anda perlu menetapkan kebenaran writePhotosAlbum dalam manifest.json.
4. Kesimpulan

Melalui pengenalan artikel ini, kita dapat melihat prinsip dan langkah asas uniapp untuk melaksanakan tangkapan skrin, dan mempelajari perkara yang perlu diberi perhatian. Dengan menggunakan antara muka dan fungsi yang disediakan secara rasional oleh uniapp, keperluan fungsian pelbagai aplikasi dapat direalisasikan dengan cepat, pengalaman pengguna boleh dipertingkatkan dan pengalaman pengguna yang baik boleh dibawa kepada pengguna.

Atas ialah kandungan terperinci Bagaimana untuk menangkap sebahagian daripada skrin dalam uniapp. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana saya mengendalikan storan tempatan di uni-app? Bagaimana saya mengendalikan storan tempatan di uni-app? Mar 11, 2025 pm 07:12 PM

Artikel ini memperincikan API penyimpanan tempatan Uni-App (uni.setstoragesync (), uni.getstoragesync (), dan rakan-rakan async mereka), menekankan amalan terbaik seperti menggunakan kekunci deskriptif, mengehadkan saiz data, dan mengendalikan parsing JSON. Ia menekankan bahawa lo

Bagaimanakah saya menguruskan Negeri dalam Uni App menggunakan Vuex atau Pinia? Bagaimanakah saya menguruskan Negeri dalam Uni App menggunakan Vuex atau Pinia? Mar 11, 2025 pm 07:08 PM

Artikel ini membandingkan Vuex dan Pinia untuk pengurusan negeri di Uni-App. Ia memperincikan ciri -ciri, pelaksanaan, dan amalan terbaik mereka, menonjolkan kesederhanaan Pinia berbanding struktur Vuex. Pilihan bergantung pada kerumitan projek, dengan pinia sutia

Bagaimana saya menggunakan API Geolocation Uni-App? Bagaimana saya menggunakan API Geolocation Uni-App? Mar 11, 2025 pm 07:14 PM

Artikel ini memperincikan API Geolocation Uni-App, yang memberi tumpuan kepada uni.getLocation (). Ia menangani perangkap biasa seperti sistem koordinat yang salah (GCJ02 vs WGS84) dan isu kebenaran. Meningkatkan ketepatan lokasi melalui bacaan dan pengendalian purata

Bagaimana saya membuat permintaan API dan mengendalikan data dalam uni app? Bagaimana saya membuat permintaan API dan mengendalikan data dalam uni app? Mar 11, 2025 pm 07:09 PM

Butiran artikel ini membuat dan mendapatkan permintaan API dalam Uni-app menggunakan Uni.request atau Axios. Ia meliputi pengendalian tindak balas JSON, amalan keselamatan terbaik (HTTPS, pengesahan, pengesahan input), kegagalan penyelesaian masalah (isu rangkaian, kors, s

Bagaimana saya menggunakan API perkongsian sosial Uni-app? Bagaimana saya menggunakan API perkongsian sosial Uni-app? Mar 13, 2025 pm 06:30 PM

Artikel ini memperincikan bagaimana untuk mengintegrasikan perkongsian sosial ke dalam projek Uni-app menggunakan API Uni.share, meliputi persediaan, konfigurasi, dan ujian di seluruh platform seperti WeChat dan Weibo.

Bagaimanakah saya menggunakan ciri Easycom Uni-App untuk pendaftaran komponen automatik? Bagaimanakah saya menggunakan ciri Easycom Uni-App untuk pendaftaran komponen automatik? Mar 11, 2025 pm 07:11 PM

Artikel ini menerangkan ciri Easycom UNI-APP, mengautomasikan pendaftaran komponen. Ia memperincikan konfigurasi, termasuk pemetaan komponen autoscan dan adat, menonjolkan faedah seperti dikurangkan boilerplate, kelajuan yang lebih baik, dan kebolehbacaan yang dipertingkatkan.

Bagaimanakah saya menggunakan preprocessors (sass, kurang) dengan uni-app? Bagaimanakah saya menggunakan preprocessors (sass, kurang) dengan uni-app? Mar 18, 2025 pm 12:20 PM

Artikel membincangkan menggunakan SASS dan kurang preprocessors dalam UNI-APP, memperincikan persediaan, faedah, dan penggunaan dwi. Fokus utama adalah pada konfigurasi dan kelebihan. [159 aksara]

Bagaimanakah saya menggunakan API Uni.request Uni-App untuk membuat permintaan HTTP? Bagaimanakah saya menggunakan API Uni.request Uni-App untuk membuat permintaan HTTP? Mar 11, 2025 pm 07:13 PM

Artikel ini butiran API UNI.REQUEST dalam UNI-APP untuk membuat permintaan HTTP. Ia meliputi penggunaan asas, pilihan lanjutan (kaedah, tajuk, jenis data), teknik pengendalian ralat yang mantap (panggilan balik gagal, pemeriksaan kod status), dan integrasi dengan authenticat

See all articles