2013-07-11 34 views
6

Tôi có biểu mẫu nhập html chuẩn bao gồm trường để tải lên tệp (hình ảnh).Có thể thay đổi kích thước hình ảnh (phía máy khách) trên biểu mẫu html trước khi tải lên không?

Tôi không may là không thể chỉnh sửa php phụ trợ xử lý tệp, nhưng tôi cần phải đổi kích thước hình ảnh thành một kích thước nhất định.

Tôi đã nghĩ rằng tôi có thể rút ra mẹo này bằng cách thay đổi kích thước hình ảnh bằng các phương thức của khách hàng thay thế, trên biểu mẫu, trước khi gửi thực tế tới biểu mẫu PHP.

Điều này có khả thi không? Bất cứ ai biết một phương pháp tốt?

Xin cảm ơn !!!

+0

Có thể, bạn có thể drawImage thành canvas và sau đó toDataUrl nó. Không chắc chắn nếu nó sẽ làm việc. – Amadan

Trả lời

11

Bạn có thể sử dụng Trình quản lý tệp mới để cho phép người dùng chọn hình ảnh từ hệ thống tệp cục bộ của họ.

Sau đó, bạn có thể sử dụng canvas để thay đổi kích thước hình ảnh nếu cần.

enter image description here

Mã này cho phép người dùng chọn tệp hình ảnh cục bộ.

Hình ảnh sẽ được chia tỷ lệ thành một nửa ở phía máy khách.

<!doctype html> 
<html> 
<head> 
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /> 
<title>Image preview example</title> 
<script type="text/javascript"> 
oFReader = new FileReader(), rFilter = /^(?:image\/bmp|image\/cis\-cod|image\/gif|image\/ief|image\/jpeg|image\/jpeg|image\/jpeg|image\/pipeg|image\/png|image\/svg\+xml|image\/tiff|image\/x\-cmu\-raster|image\/x\-cmx|image\/x\-icon|image\/x\-portable\-anymap|image\/x\-portable\-bitmap|image\/x\-portable\-graymap|image\/x\-portable\-pixmap|image\/x\-rgb|image\/x\-xbitmap|image\/x\-xpixmap|image\/x\-xwindowdump)$/i; 

oFReader.onload = function (oFREvent) { 

    var img=new Image(); 
    img.onload=function(){ 
     document.getElementById("originalImg").src=img.src; 
     var canvas=document.createElement("canvas"); 
     var ctx=canvas.getContext("2d"); 
     canvas.width=img.width/2; 
     canvas.height=img.height/2; 
     ctx.drawImage(img,0,0,img.width,img.height,0,0,canvas.width,canvas.height); 
     document.getElementById("uploadPreview").src = canvas.toDataURL(); 
    } 
    img.src=oFREvent.target.result; 
}; 

function loadImageFile() { 
    if (document.getElementById("uploadImage").files.length === 0) { return; } 
    var oFile = document.getElementById("uploadImage").files[0]; 
    if (!rFilter.test(oFile.type)) { alert("You must select a valid image file!"); return; } 
    oFReader.readAsDataURL(oFile); 
} 
</script> 
</head> 

<body onload="loadImageFile();"> 
    <form name="uploadForm"> 
    <table> 
     <tbody> 
     <tr> 
      <td><img id="originalImg"/></td> 
      <td><img id="uploadPreview"/></td> 
      <td><input id="uploadImage" type="file" name="myPhoto" onchange="loadImageFile();" /></td> 
     </tr> 
     </tbody> 
    </table> 
    </form> 
</body> 
</html> 

Trình duyệt hiện đại hỗ trợ FileReader (nhưng đối với IE bạn cần 10+).

+0

làm cách nào tôi có thể thêm hình ảnh được thay đổi kích thước tải lên vào mysql – INOH

Các vấn đề liên quan