JavaScript保存圖片詳解

JavaScript 是一種用於 Web 開發的腳本語言, 絕大多數時候它是在客戶端運行的。在實際應用中我們經常需要保存一些圖片,下面就從多個方面,詳細介紹如何使用 JavaScript 去保存圖片。

一、JavaScript 保存圖片到手機

在移動端的 Web 開發中,我們經常需要將圖片保存到手機本地。使用 JavaScript 保存圖片可以用一些第三庫, 如 canvas2image、saveSvgAsPng 等。這裡我們以 canvas2image 來進行介紹。

canvas2image 是一個可以將 Canvas 對象保存為本地圖片的 JavaScript 庫。

步驟如下:

1. 引入 canvas2image 庫

“`HTML

“`

2. 在 HTML 中,創建一個 Canvas 元素,並將圖片繪製到該元素中。

“`HTML

“`

“`JavaScript
$(function () {
/**
* $(”)[0] is equivalent to document.createElement(‘img’).
* It’s faster since jQuery creates a new wrapper object instead of setting the tagName property.
*/
var img = $(”)[0];
img.onload = function () {
// 創建 Canvas 元素
var canvas = document.createElement(“canvas”);
canvas.width = img.width;
canvas.height = img.height;

// 把圖像繪製到 Canvas 上
var ctx = canvas.getContext(“2d”);
ctx.drawImage(img, 0, 0, img.width, img.height);
var dataURL = canvas.toDataURL(“image/png”);

// 將圖片保存到本地
canvas2image.saveAsPNG(canvas,dataURL.length,canvas.width,canvas.height)
}
img.src=”https://www.baidu.com/img/bd_logo1.png?qua=high”;
})
“`

使用 canvas2image 庫,獲取圖片的 DataURL,然後調用 saveAsPNG 方法進行保存。

二、JavaScript 保存圖片到本地指定位置

將圖片保存到本地指定位置,需要後端的支持才行。在前端我們需要使用一些後端語言來輔助實現。在這裡,我們以PHP舉例來演示如何實現。

步驟如下:

1. HTML 代碼中,創建一個 input 元素,並指定文件的上傳路徑

“`HTML



“`

2. 使用 JavaScript 獲取圖片文件對象

“`JavaScript
$(function () {
$(“#submit-btn”).click( function () {
var file = $(“#file-upload”)[0].files[0];
console.log(file);
// 文件上傳邏輯
});
})
“`

3. 將文件對象使用 FormData 類型發送到後台

“`JavaScript
$(function () {
$(“#submit-btn”).click( function () {
var file = $(“#file-upload”)[0].files[0];
console.log(file);

var formData = new FormData();
formData.append(“image”,file);

$.ajax({
url:”saveImage.php”,
type:”POST”,
data:formData,
contentType:false,//這裡不能省略
processData:false,//這裡不能省略
success:function(data){
alert(“保存成功”)
}
})
});
})
“`

4. 在後端(PHP)中,保存文件

“`php

“`

這裡使用了 PHP 的 move_uploaded_file 函數,將文件保存到指定路徑中。

三、JavaScript 保存圖片到服務器

將圖片保存到服務器上需要後端語言的支持。下面以 PHP 為例,演示如何將圖片保存到服務器上。

步驟如下:

1. HTML 代碼中,創建一個 input 元素,並指定文件的上傳路徑

“`HTML



“`

2. 使用 JavaScript 獲取圖片文件對象

“`JavaScript
$(function () {
$(“#submit-btn”).click( function () {
var file = $(“#file-upload”)[0].files[0];
console.log(file);
// 文件上傳邏輯
});
})
“`

3. 將文件對象使用 FormData 類型發送到後台

“`JavaScript
$(function () {
$(“#submit-btn”).click( function () {
var file = $(“#file-upload”)[0].files[0];
console.log(file);

var formData = new FormData();
formData.append(“image”,file);

$.ajax({
url:”saveImage.php”,
type:”POST”,
data:formData,
contentType:false,//這裡不能省略
processData:false,//這裡不能省略
success:function(data){
alert(“保存成功”)
}
})
});
})
“`

4. 在後端(PHP)中,保存文件

“`php

“`

在 PHP 中,使用 move_uploaded_file 函數將文件保存至指定路徑中。

四、JavaScript 保存圖片到本地

將圖片保存到本地,我們需要使用 FileSaver.js 庫。

步驟如下:

1. HTML 代碼中,創建一個 button 元素

“`HTML

“`

2. 使用 JavaScript 獲取圖片的 DataURL,使用 saveAs 方法進行保存。

“`JavaScript
$(function () {
$(“#btn-save”).click(function () {
var canvas = document.createElement(“canvas”);
canvas.width = 200;
canvas.height = 200;
// 把圖像繪製到 Canvas 上
var ctx = canvas.getContext(“2d”);
ctx.drawImage($(“#img”)[0], 0, 0, 200, 200);
var dataURL = canvas.toDataURL(“image/png”);

saveAs(dataURL, “myPicture.png”);
})
})
“`

這裡使用了 {FileSaver.js} 庫中的 saveAs 方法,將 DataURL 數據保存至本地。

五、JavaScript 保存圖片到指定目錄

在前面的例子中,我們都是將文件保存到默認目錄中的。下面我們介紹如何將文件保存到指定目錄中。

以 PHP 為例,步驟如下:

1. 新建保存文件的文件夾

在服務器上,例如:/var/www/html/myapp/uploads。修改文件夾權限,以確保可以向其中寫入文件。

“`Shell
$ sudo mkdir /var/www/html/myapp/uploads
$ sudo chown -R www-data:www-data /var/www/html/myapp/uploads
$ sudo chmod -R 755 /var/www/html/myapp/uploads

“`

2. 保存圖片時,指定圖片保存路徑

“`php
$fileName = $_FILES[‘image’][‘name’];
$uploadPath = “uploads/” . basename($fileName);
move_uploaded_file($_FILES[‘image’][‘tmp_name’], $uploadPath);
“`

這裡,我們將文件保存在 upload 目錄下,文件名為原文件的名字。

六、JavaScript 保存圖片到手機相冊

在移動端中,我們經常需要將圖片保存到手機相冊。 在 IOS 上,使用 JavaScript 保存至相冊的方法如下:

“`JavaScript
var imgSrc = ‘https://www.baidu.com/img/bd_logo1.png?qua=high’;
var xhr = new XMLHttpRequest();
xhr.open(“get”, imgSrc, true);
xhr.responseType = “blob”;
xhr.onload = function () {
if (this.status === 200) {
var blob = this.response;
saveImageIOS(blob);
}
}
xhr.send();

function saveImageIOS (blob) {
var reader = new FileReader();
reader.onload = function (event) {
var base64Str = event.target.result;
var img = new Image();
img.onload = function () {
var canvas = document.createElement(“canvas”);
canvas.width = this.width;
canvas.height = this.height;
var ctx = canvas.getContext(“2d”);
ctx.drawImage(this, 0, 0, this.width, this.height);
canvas.toBlob(function (blob) {
var url = URL.createObjectURL(blob);
var a = document.createElement(“a”);
a.href = url;
a.target = ‘_blank’;
a.download = ‘image.png’;
a.click();
URL.revokeObjectURL(url);
})
}
img.src = base64Str;
}
reader.readAsDataURL(blob);
}
“`

在 Android 上,我們可以通過調用 Android 的 Native 方法來實現圖片保存。

“`JavaScript
function saveImageAndroid(blob) {
let fileReader = new FileReader();
fileReader.onload = function() {
let arrayBuffer = this.result;
let blob = new Blob([new Uint8Array(arrayBuffer)]);
let type = ‘image/png’;
let filename = ‘image.png’;
try {
window.saveimage.savePicture(blob, type, filename);
} catch (e) {
alert(e.name + “: ” + e.message);
}
};
fileReader.readAsArrayBuffer(blob);
}
“`

這裡的 saveimage 是一個 Native 對象,其中含有實現圖片保存的方法。

七、保存圖片沒法保存jpg

在前面的例子中,為了方便,我們將圖片格式設置為 png。如果需要保存 jpg 格式的圖片,我們可以通過以下方法將 png 圖片轉成 jpg。

“`JavaScript
function pngToJpg (pngImage) {
var img = document.createElement(‘img’);
img.src = pngImage;
img.onload = function () {
// 創建 Canvas 元素
var canvas = document.createElement(“canvas”);
canvas.width = img.width;
canvas.height = img.height;

// 把圖像繪製到 Canvas 上
var ctx = canvas.getContext(“2d”);
ctx.drawImage(img, 0, 0, img.width, img.height);
var jpgDataURL = canvas.toDataURL(“image/jpeg”,0.8);
saveAs(jpgDataURL,”myPicture.jpg”);
}
}
“`

這裡需要注意的是, png 轉成 jpg 時,需要指定圖片的質量。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/159246.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-19 18:58
下一篇 2024-11-19 18:58

相關推薦

  • 用Python繪製酷炫圖片

    在本篇文章中,我們將展示如何使用Python繪製酷炫的圖片。 一、安裝Python繪圖庫 在使用Python繪製圖片之前,我們需要先安裝Python繪圖庫。Python有很多繪圖庫…

    編程 2025-04-29
  • 使用axios獲取返回圖片

    使用axios獲取返回圖片是Web開發中很常見的需求。本文將介紹如何使用axios獲取返回圖片,並從多個方面進行詳細闡述。 一、安裝axios 使用axios獲取返回圖片前,首先需…

    編程 2025-04-29
  • Python 圖片轉表格

    本文將詳細介紹如何使用Python將圖片轉為表格。大家平時在處理一些資料的時候難免會遇到圖片轉表格的需求。比如從PDF文檔中提取表格等場景。當然,這個功能也可以通過手動複製、粘貼,…

    編程 2025-04-29
  • Python緩存圖片的處理方式

    本文將從多個方面詳細闡述Python緩存圖片的處理方式,包括緩存原理、緩存框架、緩存策略、緩存更新和緩存清除等方面。 一、緩存原理 緩存是一種提高應用程序性能的技術,在網絡應用中流…

    編程 2025-04-29
  • Python如何抓取圖片數據

    Python是一門強大的編程語言,能夠輕鬆地進行各種數據抓取與處理。抓取圖片數據是一個非常常見的需求。在這篇文章中,我們將從多個方面介紹Python如何抓取圖片數據。 一、使用ur…

    編程 2025-04-29
  • Python利用Image加圖片的方法

    在Python中,利用Image庫可以快速處理圖片,並加入需要的圖片,本文將從多個方面詳細闡述這個操作。 一、Image庫的安裝和基礎操作 首先,我們需要在Python中安裝Ima…

    編程 2025-04-28
  • Avue中如何按照後端返回的鏈接顯示圖片

    Avue是一款基於Vue.js、Element-ui等技術棧的可視化開發框架,能夠輕鬆搭建前端頁面。在開發中,我們使用到的圖片通常都是存儲在後端服務器上的,那麼如何使用Avue來展…

    編程 2025-04-28
  • 使用CKSlide實現圖片輪播

    CKSlide是一個基於jQuery的插件,可以方便地為網頁添加幻燈片和圖片輪播效果。使用CKSlide可以讓網站更加生動、活潑,給用戶帶來更好的體驗。 一、CKSlide基本用法…

    編程 2025-04-28
  • Python中使用socket傳輸圖片

    本文將從多個方面介紹如何使用Python中的socket模塊傳輸圖片,涉及到準備工作、發送方部分和接收方部分的詳細代碼實現。 一、準備工作 在使用Python中的socket模塊進…

    編程 2025-04-28
  • Python窗口中導入圖片

    Python作為一種高級語言,在圖形界面的應用和操作方面越來越得心應手。本篇文章將詳細闡述Python窗口中導入圖片的方法和實現。 一、導入圖片的準備工作 在導入圖片前,我們需要先…

    編程 2025-04-28

發表回復

登錄後才能評論