Bagaimana Anda memuat gambar ke dalam javascript?

JavaScript Muat Gambar adalah pustaka untuk memuat gambar yang disediakan sebagai objek

document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
5 atau
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
6 atau melalui
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
7. Ini mengembalikan elemen HTML
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
8 atau
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
9 yang diskalakan, dipotong, atau diputar secara opsional

Ini juga menyediakan metode untuk mem-parsing metadata gambar untuk mengekstrak tag IPTC dan Exif serta gambar mini tersemat, untuk menimpa nilai Exif Orientation dan mengembalikan header gambar lengkap setelah mengubah ukuran

Mempersiapkan

Instal melalui NPM

npm install blueimp-load-image

Ini akan menginstal file JavaScript di dalam

document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
_0 relatif terhadap direktori Anda saat ini, dari mana Anda dapat menyalinnya ke folder yang disediakan oleh server web Anda

Selanjutnya, sertakan skrip Gambar Muat JavaScript yang digabungkan dan diperkecil di markup HTML Anda

<script src="js/load-image.all.min.js"></script>

Atau sebagai alternatif, pilih komponen mana yang ingin Anda sertakan

<!-- required for all operations -->
<script src="js/load-image.js"></script>

<!-- required for scaling, cropping and as dependency for rotation -->
<script src="js/load-image-scale.js"></script>

<!-- required to parse meta data and to restore the complete image head -->
<script src="js/load-image-meta.js"></script>

<!-- required to parse meta data from images loaded via URL -->
<script src="js/load-image-fetch.js"></script>

<!-- required for rotation and cross-browser image orientation -->
<script src="js/load-image-orientation.js"></script>

<!-- required to parse Exif tags and cross-browser image orientation -->
<script src="js/load-image-exif.js"></script>

<!-- required to display text mappings for Exif tags -->
<script src="js/load-image-exif-map.js"></script>

<!-- required to parse IPTC tags -->
<script src="js/load-image-iptc.js"></script>

<!-- required to display text mappings for IPTC tags -->
<script src="js/load-image-iptc-map.js"></script>
_

Penggunaan

Memuat gambar

Dalam kode aplikasi Anda, gunakan fungsi

document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
_1 dengan gaya

document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}

Atau gunakan API berbasis seperti ini (polyfill untuk browser lama)

document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
_

Dengan async/menunggu (membutuhkan browser modern atau transpiler kode seperti Babel atau TypeScript)

document.getElementById('file-input').onchange = async function () {
  let data = await loadImage(this.files[0], { maxWidth: 600 })
  document.body.appendChild(data.image)
}

Penskalaan gambar

Dimungkinkan juga untuk menggunakan fungsionalitas penskalaan gambar secara langsung dengan gambar yang sudah ada

var scaledImage = loadImage.scale(
  img, // img or canvas element
  { maxWidth: 600 }
)

Persyaratan

Pustaka JavaScript Load Image tidak memiliki dependensi, tetapi mendapat manfaat dari dua polyfill berikut

  • blueimp-canvas-to-blob untuk browser tanpa HTMLCanvasElement asli. dukungan toBlob, untuk membuat
    document.getElementById('file-input').onchange = function () {
      loadImage(
        this.files[0],
        function (img) {
          document.body.appendChild(img)
        },
        { maxWidth: 600 } // Options
      )
    }
    6 objek dari
    document.getElementById('file-input').onchange = function () {
      loadImage(
        this.files[0],
        function (img) {
          document.body.appendChild(img)
        },
        { maxWidth: 600 } // Options
      )
    }
    9 elemen
  • janji-polyfill untuk dapat menggunakan API
    document.getElementById('file-input').onchange = function () {
      loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
        document.body.appendChild(data.image)
      })
    }
    4 berbasis Janji di Browser tanpa dukungan asli
    document.getElementById('file-input').onchange = function () {
      loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
        document.body.appendChild(data.image)
      })
    }
    5

Dukungan peramban

Browser yang mengimplementasikan API berikut mendukung semua opsi

  • Memuat gambar dari objek File dan Blob
    • URL. createObjectURL atau FileReader. bacaAsDataURL
  • Mem-parsing data meta
    • FileReader. readAsArrayBuffer
    • Gumpal. mengiris
    • DataView (tidak diperlukan dukungan BigInt)
  • Mem-parsing data meta dari gambar yang dimuat melalui URL
    • mengambil Respon. gumpalan atau
  • API berbasis janji
    • Janji

Ini termasuk (tetapi tidak terbatas pada) browser berikut

  • Chrome 32+
  • Firefox 29+
  • Safari 8+
  • Chrome Seluler 42+ (Android)
  • Seluler Firefox 50+ (Android)
  • Safari Seluler 8+ (iOS)
  • Tepi 74+
  • Tepi Warisan 12+
  • Internet Explorer 10+
    document.getElementById('file-input').onchange = function () {
      loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
        document.body.appendChild(data.image)
      })
    }
    _6

document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
6 Internet Explorer sebuah polyfill untuk API berbasis
document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
5

Memuat gambar dari URL dan menerapkan transformasi (penskalaan, pemangkasan, dan rotasi - kecuali

document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
9, yang memerlukan pembacaan meta data) didukung oleh semua browser yang mengimplementasikan antarmuka HTMLCanvasElement

Memuat gambar dari URL dan menskalakan ukurannya didukung oleh semua browser yang mengimplementasikan elemen img dan telah berhasil diuji dengan mesin browser setua Internet Explorer 5 (melalui mode emulasi IE11)

Fungsi

document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
1 menerapkan opsi menggunakan peningkatan progresif dan kembali ke konfigurasi yang didukung oleh browser, mis. g. jika elemen
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
_9 tidak didukung, elemen
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
8 yang setara dikembalikan

API

Telepon balik

Tanda tangan fungsi

Fungsi

document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
1 menerima objek File atau Blob atau URL gambar sebagai argumen pertama

Jika File atau Blob diteruskan sebagai parameter, ia mengembalikan elemen HTML

document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
8 jika browser mendukung URL API, alternatifnya objek FileReader jika
document.getElementById('file-input').onchange = async function () {
  let data = await loadImage(this.files[0], { maxWidth: 600 })
  document.body.appendChild(data.image)
}
5 API didukung, atau
document.getElementById('file-input').onchange = async function () {
  let data = await loadImage(this.files[0], { maxWidth: 600 })
  document.body.appendChild(data.image)
}
6

Itu selalu mengembalikan elemen img HTML saat mengirimkan URL gambar

var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

Batalkan pemuatan gambar

Beberapa browser (mis. g. Chrome) akan membatalkan proses pemuatan gambar jika properti

document.getElementById('file-input').onchange = async function () {
  let data = await loadImage(this.files[0], { maxWidth: 600 })
  document.body.appendChild(data.image)
}
7 dari elemen
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
8 diubah
Untuk menghindari permintaan yang tidak perlu, kami dapat menggunakan URL data gambar GIF transparan berukuran 1x1 piksel sebagai
document.getElementById('file-input').onchange = async function () {
  let data = await loadImage(this.files[0], { maxWidth: 600 })
  document.body.appendChild(data.image)
}
7 target untuk membatalkan unduhan gambar asli

Untuk menonaktifkan penanganan panggilan balik, kita juga dapat membatalkan penangan kejadian gambar dan untuk kompatibilitas browser maksimum, batalkan proses pembacaan file jika objek yang dikembalikan adalah instance FileReader

var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

if (loadingImage) {
  // Unset event handling for the loading image:
  loadingImage.onload = loadingImage.onerror = null

  // Cancel image loading process:
  if (loadingImage.abort) {
    // FileReader instance, stop the file reading process:
    loadingImage.abort()
  } else {
    // HTMLImageElement element, cancel the original image request by changing
    // the target source to the data URL of a 1x1 pixel transparent image GIF:
    loadingImage.src =
      'data:image/gif;base64,' +
      'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  }
}

Tolong dicatat
Elemen

document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
8 (atau
document.getElementById('file-input').onchange = async function () {
  let data = await loadImage(this.files[0], { maxWidth: 600 })
  document.body.appendChild(data.image)
}
5) untuk memuat gambar hanya dikembalikan saat menggunakan API gaya panggilan balik dan tidak tersedia dengan API berbasis

Argumen panggilan balik

Untuk API gaya panggilan balik, argumen kedua untuk

document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
1 harus berupa fungsi
var scaledImage = loadImage.scale(
  img, // img or canvas element
  { maxWidth: 600 }
)
3, yang dipanggil saat gambar telah dimuat atau terjadi kesalahan saat memuat gambar

Fungsi callback melewati dua argumen

  1. Elemen img HTML atau elemen kanvas, atau objek Acara bertipe
    var scaledImage = loadImage.scale(
      img, // img or canvas element
      { maxWidth: 600 }
    )
    4
  2. Objek dengan dimensi gambar asli sebagai properti dan berpotensi tambahan

loadImage(
  fileOrBlobOrUrl,
  function (img, data) {
    document.body.appendChild(img)
    console.log('Original image width: ', data.originalWidth)
    console.log('Original image height: ', data.originalHeight)
  },
  { maxWidth: 600, meta: true }
)

Tolong dicatat
Dimensi gambar asli mencerminkan lebar dan tinggi alami dari gambar yang dimuat sebelum menerapkan transformasi apa pun
Untuk nilai yang konsisten di seluruh browser, penguraian harus diaktifkan melalui

var scaledImage = loadImage.scale(
  img, // img or canvas element
  { maxWidth: 600 }
)
5, sehingga
document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
4 dapat mendeteksi orientasi gambar otomatis dan menormalkan dimensi

Penanganan kesalahan

Contoh kode yang mengimplementasikan penanganan kesalahan

<script src="js/load-image.all.min.js"></script>
0

Janji

Jika fungsi

document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
_1 dipanggil tanpa fungsi
var scaledImage = loadImage.scale(
  img, // img or canvas element
  { maxWidth: 600 }
)
3 sebagai argumen kedua dan Promise API tersedia, ia mengembalikan objek
document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
5

<script src="js/load-image.all.min.js"></script>
1

document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
5 diselesaikan dengan objek dengan properti berikut

  • var loadingImage = loadImage(
      'https://example.org/image.png',
      function (img) {
        document.body.appendChild(img)
      },
      { maxWidth: 600 }
    )
    1. Elemen img atau kanvas HTML
  • var loadingImage = loadImage(
      'https://example.org/image.png',
      function (img) {
        document.body.appendChild(img)
      },
      { maxWidth: 600 }
    )
    2. Lebar asli gambar
  • var loadingImage = loadImage(
      'https://example.org/image.png',
      function (img) {
        document.body.appendChild(img)
      },
      { maxWidth: 600 }
    )
    3. Tinggi asli gambar

Harap baca juga catatan tentang normalisasi dimensi gambar asli di bagian tersebut

Jika telah diuraikan, properti tambahan mungkin ada pada objek

Jika pemuatan gambar gagal,

document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
_5 ditolak dengan objek Peristiwa bertipe
var scaledImage = loadImage.scale(
  img, // img or canvas element
  { maxWidth: 600 }
)
4

Pilihan

Argumen opsi opsional untuk

document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
_1 memungkinkan untuk mengonfigurasi pemuatan gambar

Itu dapat digunakan dengan cara berikut dengan gaya panggilan balik

<script src="js/load-image.all.min.js"></script>
2

Atau cara berikut dengan API berbasis

document.getElementById('file-input').onchange = function () {
  loadImage(this.files[0], { maxWidth: 600 }).then(function (data) {
    document.body.appendChild(data.image)
  })
}
5

<script src="js/load-image.all.min.js"></script>
3

Semua pengaturan bersifat opsional. Secara default, gambar dikembalikan sebagai elemen HTML

document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
8 tanpa batasan ukuran gambar

maxWidth

Menentukan lebar maksimum elemen

document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
_8/
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
9

tinggi maksimal

Menentukan tinggi maksimum elemen

document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
8/
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
9

minLebar

Menentukan lebar minimum elemen

document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
8/
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
9

minHeight

Menentukan tinggi minimum elemen

document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
_8/
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
9

sourceWidth

Lebar sub-persegi panjang gambar sumber yang akan digambar ke kanvas tujuan
Default ke lebar gambar sumber dan membutuhkan

var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

if (loadingImage) {
  // Unset event handling for the loading image:
  loadingImage.onload = loadingImage.onerror = null

  // Cancel image loading process:
  if (loadingImage.abort) {
    // FileReader instance, stop the file reading process:
    loadingImage.abort()
  } else {
    // HTMLImageElement element, cancel the original image request by changing
    // the target source to the data URL of a 1x1 pixel transparent image GIF:
    loadingImage.src =
      'data:image/gif;base64,' +
      'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  }
}
7

sourceHeight

Ketinggian sub-persegi panjang gambar sumber yang akan digambar ke kanvas tujuan
Default ke tinggi gambar sumber dan membutuhkan

var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

if (loadingImage) {
  // Unset event handling for the loading image:
  loadingImage.onload = loadingImage.onerror = null

  // Cancel image loading process:
  if (loadingImage.abort) {
    // FileReader instance, stop the file reading process:
    loadingImage.abort()
  } else {
    // HTMLImageElement element, cancel the original image request by changing
    // the target source to the data URL of a 1x1 pixel transparent image GIF:
    loadingImage.src =
      'data:image/gif;base64,' +
      'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  }
}
7

atas

Margin atas sub-persegi panjang gambar sumber
Default ke

var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

if (loadingImage) {
  // Unset event handling for the loading image:
  loadingImage.onload = loadingImage.onerror = null

  // Cancel image loading process:
  if (loadingImage.abort) {
    // FileReader instance, stop the file reading process:
    loadingImage.abort()
  } else {
    // HTMLImageElement element, cancel the original image request by changing
    // the target source to the data URL of a 1x1 pixel transparent image GIF:
    loadingImage.src =
      'data:image/gif;base64,' +
      'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  }
}
_9 dan membutuhkan
var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

if (loadingImage) {
  // Unset event handling for the loading image:
  loadingImage.onload = loadingImage.onerror = null

  // Cancel image loading process:
  if (loadingImage.abort) {
    // FileReader instance, stop the file reading process:
    loadingImage.abort()
  } else {
    // HTMLImageElement element, cancel the original image request by changing
    // the target source to the data URL of a 1x1 pixel transparent image GIF:
    loadingImage.src =
      'data:image/gif;base64,' +
      'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  }
}
7

Baik

Margin kanan sub-persegi panjang gambar sumber
Default ke

var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

if (loadingImage) {
  // Unset event handling for the loading image:
  loadingImage.onload = loadingImage.onerror = null

  // Cancel image loading process:
  if (loadingImage.abort) {
    // FileReader instance, stop the file reading process:
    loadingImage.abort()
  } else {
    // HTMLImageElement element, cancel the original image request by changing
    // the target source to the data URL of a 1x1 pixel transparent image GIF:
    loadingImage.src =
      'data:image/gif;base64,' +
      'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  }
}
_9 dan membutuhkan
var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

if (loadingImage) {
  // Unset event handling for the loading image:
  loadingImage.onload = loadingImage.onerror = null

  // Cancel image loading process:
  if (loadingImage.abort) {
    // FileReader instance, stop the file reading process:
    loadingImage.abort()
  } else {
    // HTMLImageElement element, cancel the original image request by changing
    // the target source to the data URL of a 1x1 pixel transparent image GIF:
    loadingImage.src =
      'data:image/gif;base64,' +
      'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  }
}
7

bawah

Margin bawah sub-persegi panjang gambar sumber
Default ke

var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

if (loadingImage) {
  // Unset event handling for the loading image:
  loadingImage.onload = loadingImage.onerror = null

  // Cancel image loading process:
  if (loadingImage.abort) {
    // FileReader instance, stop the file reading process:
    loadingImage.abort()
  } else {
    // HTMLImageElement element, cancel the original image request by changing
    // the target source to the data URL of a 1x1 pixel transparent image GIF:
    loadingImage.src =
      'data:image/gif;base64,' +
      'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  }
}
_9 dan membutuhkan
var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

if (loadingImage) {
  // Unset event handling for the loading image:
  loadingImage.onload = loadingImage.onerror = null

  // Cancel image loading process:
  if (loadingImage.abort) {
    // FileReader instance, stop the file reading process:
    loadingImage.abort()
  } else {
    // HTMLImageElement element, cancel the original image request by changing
    // the target source to the data URL of a 1x1 pixel transparent image GIF:
    loadingImage.src =
      'data:image/gif;base64,' +
      'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  }
}
7

kiri

Margin kiri sub-persegi panjang gambar sumber
Default ke

var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

if (loadingImage) {
  // Unset event handling for the loading image:
  loadingImage.onload = loadingImage.onerror = null

  // Cancel image loading process:
  if (loadingImage.abort) {
    // FileReader instance, stop the file reading process:
    loadingImage.abort()
  } else {
    // HTMLImageElement element, cancel the original image request by changing
    // the target source to the data URL of a 1x1 pixel transparent image GIF:
    loadingImage.src =
      'data:image/gif;base64,' +
      'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  }
}
_9 dan membutuhkan
var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

if (loadingImage) {
  // Unset event handling for the loading image:
  loadingImage.onload = loadingImage.onerror = null

  // Cancel image loading process:
  if (loadingImage.abort) {
    // FileReader instance, stop the file reading process:
    loadingImage.abort()
  } else {
    // HTMLImageElement element, cancel the original image request by changing
    // the target source to the data URL of a 1x1 pixel transparent image GIF:
    loadingImage.src =
      'data:image/gif;base64,' +
      'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  }
}
7

berisi

Menskalakan gambar ke atas/bawah untuk memuatnya dalam dimensi maksimal jika disetel ke

loadImage(
  fileOrBlobOrUrl,
  function (img, data) {
    document.body.appendChild(img)
    console.log('Original image width: ', data.originalWidth)
    console.log('Original image height: ', data.originalHeight)
  },
  { maxWidth: 600, meta: true }
)
7
Ini mengemulasi fitur CSS

menutupi

Menskalakan gambar ke atas/bawah untuk menutupi dimensi maksimal dengan dimensi gambar jika diatur ke

loadImage(
  fileOrBlobOrUrl,
  function (img, data) {
    document.body.appendChild(img)
    console.log('Original image width: ', data.originalWidth)
    console.log('Original image height: ', data.originalHeight)
  },
  { maxWidth: 600, meta: true }
)
7
Ini mengemulasi fitur CSS

rasio aspek

Pangkas gambar ke rasio aspek tertentu (mis. g.

loadImage(
  fileOrBlobOrUrl,
  function (img, data) {
    document.body.appendChild(img)
    console.log('Original image width: ', data.originalWidth)
    console.log('Original image height: ', data.originalHeight)
  },
  { maxWidth: 600, meta: true }
)
_9)
Mengatur
<script src="js/load-image.all.min.js"></script>
_00 juga mengaktifkan opsi
<script src="js/load-image.all.min.js"></script>
01

pixelRatio

Menentukan rasio piksel kanvas dengan piksel gambar fisik di layar
Harus diatur ke jendela. devicePixelRatio kecuali gambar yang diskalakan tidak ditampilkan di layar
Default ke

<script src="js/load-image.all.min.js"></script>
_02 dan membutuhkan
var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

if (loadingImage) {
  // Unset event handling for the loading image:
  loadingImage.onload = loadingImage.onerror = null

  // Cancel image loading process:
  if (loadingImage.abort) {
    // FileReader instance, stop the file reading process:
    loadingImage.abort()
  } else {
    // HTMLImageElement element, cancel the original image request by changing
    // the target source to the data URL of a 1x1 pixel transparent image GIF:
    loadingImage.src =
      'data:image/gif;base64,' +
      'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  }
}
7

Rasio downsampling

Menentukan rasio di mana gambar diturunkan (diperkecil secara bertahap)
Secara default, gambar diturunkan sampelnya dalam satu langkah
Dengan rasio

<script src="js/load-image.all.min.js"></script>
04, setiap langkah menskala gambar menjadi setengah ukuran, sebelum mencapai dimensi target
Memerlukan
var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

if (loadingImage) {
  // Unset event handling for the loading image:
  loadingImage.onload = loadingImage.onerror = null

  // Cancel image loading process:
  if (loadingImage.abort) {
    // FileReader instance, stop the file reading process:
    loadingImage.abort()
  } else {
    // HTMLImageElement element, cancel the original image request by changing
    // the target source to the data URL of a 1x1 pixel transparent image GIF:
    loadingImage.src =
      'data:image/gif;base64,' +
      'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  }
}
_7

imageSmoothingEnabled

Jika diatur ke

document.getElementById('file-input').onchange = async function () {
  let data = await loadImage(this.files[0], { maxWidth: 600 })
  document.body.appendChild(data.image)
}
_6, nonaktifkan perataan gambar
Default ke
loadImage(
  fileOrBlobOrUrl,
  function (img, data) {
    document.body.appendChild(img)
    console.log('Original image width: ', data.originalWidth)
    console.log('Original image height: ', data.originalHeight)
  },
  { maxWidth: 600, meta: true }
)
_7 dan membutuhkan
var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

if (loadingImage) {
  // Unset event handling for the loading image:
  loadingImage.onload = loadingImage.onerror = null

  // Cancel image loading process:
  if (loadingImage.abort) {
    // FileReader instance, stop the file reading process:
    loadingImage.abort()
  } else {
    // HTMLImageElement element, cancel the original image request by changing
    // the target source to the data URL of a 1x1 pixel transparent image GIF:
    loadingImage.src =
      'data:image/gif;base64,' +
      'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  }
}
7

imageSmoothingQuality

Mengatur kualitas perataan gambar
Nilai yang mungkin.

<script src="js/load-image.all.min.js"></script>
09,
<script src="js/load-image.all.min.js"></script>
10,
<script src="js/load-image.all.min.js"></script>
11
Default ke
<script src="js/load-image.all.min.js"></script>
_09 dan membutuhkan
var loadingImage = loadImage(
  'https://example.org/image.png',
  function (img) {
    document.body.appendChild(img)
  },
  { maxWidth: 600 }
)

if (loadingImage) {
  // Unset event handling for the loading image:
  loadingImage.onload = loadingImage.onerror = null

  // Cancel image loading process:
  if (loadingImage.abort) {
    // FileReader instance, stop the file reading process:
    loadingImage.abort()
  } else {
    // HTMLImageElement element, cancel the original image request by changing
    // the target source to the data URL of a 1x1 pixel transparent image GIF:
    loadingImage.src =
      'data:image/gif;base64,' +
      'R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'
  }
}
7

tanaman

Memotong gambar ke batasan

<script src="js/load-image.all.min.js"></script>
14/
<script src="js/load-image.all.min.js"></script>
15 jika disetel ke
loadImage(
  fileOrBlobOrUrl,
  function (img, data) {
    document.body.appendChild(img)
    console.log('Original image width: ', data.originalWidth)
    console.log('Original image height: ', data.originalHeight)
  },
  { maxWidth: 600, meta: true }
)
7
Mengaktifkan opsi
<script src="js/load-image.all.min.js"></script>
_01 juga mengaktifkan opsi
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
9

orientasi

Ubah kanvas sesuai dengan orientasi Exif yang ditentukan, yang dapat berupa

<script src="js/load-image.all.min.js"></script>
19 dalam rentang
<script src="js/load-image.all.min.js"></script>
02 hingga
<script src="js/load-image.all.min.js"></script>
21 atau nilai boolean
loadImage(
  fileOrBlobOrUrl,
  function (img, data) {
    document.body.appendChild(img)
    console.log('Original image width: ', data.originalWidth)
    console.log('Original image height: ', data.originalHeight)
  },
  { maxWidth: 600, meta: true }
)
7

Ketika diatur ke

loadImage(
  fileOrBlobOrUrl,
  function (img, data) {
    document.body.appendChild(img)
    console.log('Original image width: ', data.originalWidth)
    console.log('Original image height: ', data.originalHeight)
  },
  { maxWidth: 600, meta: true }
)
_7, itu akan mengatur nilai orientasi berdasarkan data Exif dari gambar, yang akan diuraikan secara otomatis jika ekstensi Exif tersedia

Nilai orientasi exif untuk menampilkan huruf F dengan benar

<script src="js/load-image.all.min.js"></script>
4

Pengaturan

<script src="js/load-image.all.min.js"></script>
_24 ke
loadImage(
  fileOrBlobOrUrl,
  function (img, data) {
    document.body.appendChild(img)
    console.log('Original image width: ', data.originalWidth)
    console.log('Original image height: ', data.originalHeight)
  },
  { maxWidth: 600, meta: true }
)
7 mengaktifkan opsi
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
9 dan
<script src="js/load-image.all.min.js"></script>
27, kecuali browser mendukung orientasi gambar otomatis (lihat )

Menyetel

<script src="js/load-image.all.min.js"></script>
_24 ke
<script src="js/load-image.all.min.js"></script>
02 mengaktifkan opsi
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
9 dan
<script src="js/load-image.all.min.js"></script>
27 jika browser mendukung orientasi gambar otomatis (untuk mengizinkan penyetelan ulang orientasi)

Menyetel

<script src="js/load-image.all.min.js"></script>
_24 ke bilangan bulat dalam rentang
<script src="js/load-image.all.min.js"></script>
33 hingga
<script src="js/load-image.all.min.js"></script>
21 selalu mengaktifkan opsi
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
9 dan juga mengaktifkan opsi
<script src="js/load-image.all.min.js"></script>
27 jika browser mendukung orientasi gambar otomatis (sekali lagi untuk memungkinkan penyetelan ulang)

meta

Parsing metadata gambar secara otomatis jika disetel ke

loadImage(
  fileOrBlobOrUrl,
  function (img, data) {
    document.body.appendChild(img)
    console.log('Original image width: ', data.originalWidth)
    console.log('Original image height: ', data.originalHeight)
  },
  { maxWidth: 600, meta: true }
)
7

Jika metadata telah ditemukan, objek data yang diteruskan sebagai argumen kedua ke fungsi callback memiliki properti tambahan (lihat )

Jika file diberikan sebagai URL dan browser mendukung API pengambilan atau Tipe respons XHR

<script src="js/load-image.all.min.js"></script>
38, ambil file sebagai
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
6 agar dapat mengurai metadata

kanvas

Mengembalikan gambar sebagai elemen kanvas jika disetel ke

loadImage(
  fileOrBlobOrUrl,
  function (img, data) {
    document.body.appendChild(img)
    console.log('Original image width: ', data.originalWidth)
    console.log('Original image height: ', data.originalHeight)
  },
  { maxWidth: 600, meta: true }
)
7

crossOrigin

Menyetel properti

<script src="js/load-image.all.min.js"></script>
_41 pada elemen
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
8 untuk memuat gambar yang mendukung CORS

noRevoke

Secara default, URL objek yang dibuat dicabut setelah gambar dimuat, kecuali jika opsi ini disetel ke

loadImage(
  fileOrBlobOrUrl,
  function (img, data) {
    document.body.appendChild(img)
    console.log('Original image width: ', data.originalWidth)
    console.log('Original image height: ', data.originalHeight)
  },
  { maxWidth: 600, meta: true }
)
7

Penguraian metadata

Jika ekstensi Load Image Meta disertakan, dimungkinkan untuk mengurai data meta gambar secara otomatis dengan opsi

<script src="js/load-image.all.min.js"></script>
27

<script src="js/load-image.all.min.js"></script>
5

Atau sebagai alternatif melalui

<script src="js/load-image.all.min.js"></script>
45, yang dapat digunakan dengan objek
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
5 atau
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
6 yang tersedia sebagai argumen pertama

<script src="js/load-image.all.min.js"></script>
6

Atau menggunakan API berbasis Janji

<script src="js/load-image.all.min.js"></script>
7

Ekstensi Metadata menambahkan opsi tambahan yang digunakan untuk metode

<script src="js/load-image.all.min.js"></script>
48

  • <script src="js/load-image.all.min.js"></script>
    _49. Jumlah maksimum byte metadata untuk diuraikan
  • <script src="js/load-image.all.min.js"></script>
    50. Nonaktifkan penguraian kepala gambar asli
  • <script src="js/load-image.all.min.js"></script>
    _51. Nonaktifkan penguraian metadata (hanya kepala gambar)

Kepala gambar

Gambar JPEG yang diubah ukurannya dapat digabungkan dengan kepala gambar aslinya melalui

<script src="js/load-image.all.min.js"></script>
52, yang memerlukan gambar yang diubah ukurannya sebagai objek
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
6 sebagai argumen pertama dan kepala gambar
<script src="js/load-image.all.min.js"></script>
54 sebagai argumen kedua

Dengan gaya panggilan balik, argumen ketiga harus berupa fungsi

var scaledImage = loadImage.scale(
  img, // img or canvas element
  { maxWidth: 600 }
)
3, yang disebut dengan objek
document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
6 baru

<script src="js/load-image.all.min.js"></script>
_8

Atau menggunakan API berbasis Janji seperti ini

<script src="js/load-image.all.min.js"></script>
_9

Tolong dicatat

document.getElementById('file-input').onchange = function () {
  loadImage(
    this.files[0],
    function (img) {
      document.body.appendChild(img)
    },
    { maxWidth: 600 } // Options
  )
}
6 objek gambar yang diubah ukurannya dapat dibuat melalui HTMLCanvasElement. toBlob
blueimp-canvas-to-blob menyediakan polyfill untuk browser tanpa dukungan asli
<script src="js/load-image.all.min.js"></script>
58

pengurai Exif

Jika Anda menyertakan ekstensi Load Image Exif Parser, argumen yang diteruskan ke panggilan balik untuk

<script src="js/load-image.all.min.js"></script>
48 akan berisi properti tambahan berikut jika data Exif dapat ditemukan di gambar yang diberikan

  • <script src="js/load-image.all.min.js"></script>
    60. Tag Exif yang diurai
  • <script src="js/load-image.all.min.js"></script>
    _61. Offset tag Exif yang diurai
  • <script src="js/load-image.all.min.js"></script>
    _62. Offset header TIFF (digunakan untuk pointer offset)
  • <script src="js/load-image.all.min.js"></script>
    _63. pesanan little endian jika benar, big endian jika salah

Objek

<script src="js/load-image.all.min.js"></script>
_60 menyimpan tag Exif yang diurai

<!-- required for all operations -->
<script src="js/load-image.js"></script>

<!-- required for scaling, cropping and as dependency for rotation -->
<script src="js/load-image-scale.js"></script>

<!-- required to parse meta data and to restore the complete image head -->
<script src="js/load-image-meta.js"></script>

<!-- required to parse meta data from images loaded via URL -->
<script src="js/load-image-fetch.js"></script>

<!-- required for rotation and cross-browser image orientation -->
<script src="js/load-image-orientation.js"></script>

<!-- required to parse Exif tags and cross-browser image orientation -->
<script src="js/load-image-exif.js"></script>

<!-- required to display text mappings for Exif tags -->
<script src="js/load-image-exif-map.js"></script>

<!-- required to parse IPTC tags -->
<script src="js/load-image-iptc.js"></script>

<!-- required to display text mappings for IPTC tags -->
<script src="js/load-image-iptc-map.js"></script>
_0

Objek

<script src="js/load-image.all.min.js"></script>
_60 dan
<script src="js/load-image.all.min.js"></script>
61 juga menyediakan metode
<script src="js/load-image.all.min.js"></script>
67 untuk mengambil nilai tag/offset melalui nama tag yang dipetakan

<!-- required for all operations -->
<script src="js/load-image.js"></script>

<!-- required for scaling, cropping and as dependency for rotation -->
<script src="js/load-image-scale.js"></script>

<!-- required to parse meta data and to restore the complete image head -->
<script src="js/load-image-meta.js"></script>

<!-- required to parse meta data from images loaded via URL -->
<script src="js/load-image-fetch.js"></script>

<!-- required for rotation and cross-browser image orientation -->
<script src="js/load-image-orientation.js"></script>

<!-- required to parse Exif tags and cross-browser image orientation -->
<script src="js/load-image-exif.js"></script>

<!-- required to display text mappings for Exif tags -->
<script src="js/load-image-exif-map.js"></script>

<!-- required to parse IPTC tags -->
<script src="js/load-image-iptc.js"></script>

<!-- required to display text mappings for IPTC tags -->
<script src="js/load-image-iptc-map.js"></script>
_1

Secara default, hanya nama berikut yang dipetakan

  • <script src="js/load-image.all.min.js"></script>
    _68
  • <script src="js/load-image.all.min.js"></script>
    69 (lihat )
  • <script src="js/load-image.all.min.js"></script>
    70 (lihat )
  • <script src="js/load-image.all.min.js"></script>
    71 (lihat )
  • <script src="js/load-image.all.min.js"></script>
    72 (lihat )

Jika Anda juga menyertakan pustaka Load Image IPTC Map, pemetaan tag tambahan akan tersedia, serta tiga metode tambahan

Bagaimana cara memuat gambar dalam JavaScript?

Gambar di halaman web dapat dimuat menggunakan tag . Gambar dimuat menggunakan tag

Bagaimana cara menampilkan gambar dalam JavaScript?

Langkah-langkah. .
Create element in the HTML code..
Add style to element and set display properties to none..
Buat fungsi "show()" JavaScript yang dapat mengakses gambar dan mengubah properti tampilan untuk diblokir
Tambahkan tombol dalam kode HTML yang memanggil fungsi "show()" saat pengguna mengkliknya

Bagaimana cara mendapatkan URL gambar dalam JavaScript?

getAttribute("src") atau $("img. sesuatu"). attr("src") , yang membaca markup asli, gunakan imageElement. src properti yang akan selalu memberi Anda URL lengkap.

Apa itu gambar () dalam JavaScript?

Image() Konstruktor Image() membuat instance HTMLImageElement baru . Ini secara fungsional setara dengan dokumen. buat Elemen('img').