如何使用javascript在表单中调整多个图像大小、预览和上传

     2023-03-22     51

关键词:

【中文标题】如何使用javascript在表单中调整多个图像大小、预览和上传【英文标题】:How to do multiple image resize, preview and upload in a form using javascript 【发布时间】:2018-01-18 18:03:23 【问题描述】:

我需要的是在表单中上传图片:

<input type="file" id="files" name="pics[]" multiple />
<br>
<output id="list"></output>

我读了很多,包括:

    Image resizing client-side with JavaScript before upload to the server Show an image preview before upload https://hacks.mozilla.org/2011/01/how-to-develop-a-html5-image-uploader/

然后想出一个解决办法,但是不行:

<style>
  .thumb 
    height: 75px;
    border: 1px solid #000;
    margin: 10px 5px 0 0;
  
</style>



<script>

function handleFileSelect(evt) 
    var files = evt.target.files;

    // Loop through the FileList and render image files as thumbnails.
    for (var i = 0, f; f = files[i]; i++) 

      // Only process image files.
      if (!f.type.match('image.*')) 
        continue;
      


      var reader = new FileReader();

      // Closure to capture the file information.
      reader.onload = (function(theFile) 
        return function(e) 

var img = document.createElement('img');
img.src = e.target.result;
var canvas = document.createElement('canvas');

var MAX_WIDTH = 800;
var MAX_HEIGHT = 600;
var width = img.width;
var height = img.height;

if (width > height) 
  if (width > MAX_WIDTH) 
    height *= MAX_WIDTH / width;
    width = MAX_WIDTH;
  
 else 
  if (height > MAX_HEIGHT) 
    width *= MAX_HEIGHT / height;
    height = MAX_HEIGHT;
  

canvas.width = width;
canvas.height = height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, width, height);

var dataurl = canvas.toDataURL("image/png");

         // Render thumbnail.
          var span = document.createElement('span');
          span.innerHTML = 
          [
            '<img class="thumb" src="', 
            dataurl,
            '" title="', escape(theFile.name), 
            '"/>'
          ].join('');

          document.getElementById('list').insertBefore(span, null);
        ;
      )(f);

      // Read in the image file as a data URL.
      reader.readAsDataURL(f);
    
  

  document.getElementById('files').addEventListener('change', handleFileSelect, false);

</script>

它不会调整大小,也不会预览。 但是,仍然可以上传多个完整尺寸的图片。

编辑: 它会调整大小并进行预览。但是我点击提交表单后,仍然会上传完整尺寸的原始图片。

我做错了吗?

【问题讨论】:

对于预览,您最好获取图像的 base64 值并将其输入到预先存在的 img 标签的 src 中,而不必使用画布。 我需要先调整大小。在不调整大小的情况下,我可以用 e.target.result 替换 dataurl,然后预览就可以了。但这不是我需要的。 【参考方案1】:

提交完整尺寸的原始图片是因为您没有更改图片本身,而是创建了新图片。但是&lt;input[file]&gt;仍然指向原始图像。您可以忽略这些&lt;input[file]&gt;,而是可能通过隐藏的&lt;input&gt; 字段在&lt;form/&gt; 内提交调整大小的图像的dataUrl。

只需使用调整大小的图像,将它们转换为base64 dataUrls,写入表单中的一些隐藏输入即可提交。

var dataurl = canvas.toDataURL("image/png");

document.getElementById('hiddenInputForImage').value=dataurl;

【讨论】:

谢谢。我试过了。添加您的代码,以 的形式添加输入。但是上传仍然没有成功。没有文件名和图片内容上传到服务器。 不,这不是我想要的。隐藏字段只是&lt;input[text]&gt;,它将包含我们要上传的dataURL。如果需要,您可以在服务器端使用 dataUrl 创建图像,或者直接提供它们。 @valpa 见***.com/questions/40067544/…

如何在多个文件输入中动态填充文件

...【发布时间】:2020-04-0801:04:33【问题描述】:我正在使用JavaScript库here选择多个图像并通过表单将它们保存在数据库中,当我编辑表单时,我从数据中获取图像并像这样填充。<script>varupload=newFileUploadWithPreview(\ 查看详情

如何使用javascript显示在身体中心对齐的多个图像

】如何使用javascript显示在身体中心对齐的多个图像【英文标题】:Howtoshowmultipleimagesthatarealignedinthecenterofthebodyusingjavascript【发布时间】:2014-09-2022:54:13【问题描述】:我有一个JavaScript函数可以检测用户中的浏览器,现在我希望... 查看详情

如何在codeigniter中使用img_library调整多个图像的大小[重复]

】如何在codeigniter中使用img_library调整多个图像的大小[重复]【英文标题】:Howtoresizemultipleimageusingimg_libraryincodeigniter[duplicate]【发布时间】:2013-04-0701:53:28【问题描述】:我上传了一张图片,我想将其重新调整为200x200、70x70、40x40... 查看详情

如何动态调整电子邮件客户端中的图像大小?

...【问题描述】:有没有办法调整图像的大小以适应在没有javascript和有限的CSS中查看图像的窗口?我问是因为我发送了一个电子邮件活动,其中包含我想要尽可能大的主图像滚动。我已经阅读了使用javascript和jQuery执行此操作的 查看详情

在javascript中如何在选择一个表单字段时要求多个表单字段?

】在javascript中如何在选择一个表单字段时要求多个表单字段?【英文标题】:injavascripthowtorequiremultipleformfieldswhenoneisselected?【发布时间】:2016-08-1301:43:49【问题描述】:在一个html5页面中,我有2个标准格式的字段。我需要的是... 查看详情

使用 javascript 画布调整图像大小(平滑)

】使用javascript画布调整图像大小(平滑)【英文标题】:Resizeimagewithjavascriptcanvas(smoothly)【发布时间】:2013-10-1605:28:47【问题描述】:我正在尝试使用画布调整一些图像的大小,但我对如何平滑它们一无所知。在Photoshop、浏览器... 查看详情

如何使用 phalcon 上传多个图像并将其名称存储在数据库中?

】如何使用phalcon上传多个图像并将其名称存储在数据库中?【英文标题】:Howtouploadmultipleimagesandstoretheirnameindatabasewithphalcon?【发布时间】:2018-03-1518:01:21【问题描述】:我创建了一个表单,用户可以上传多个图像,并将上传的... 查看详情

如何使用 Dropzone 在 React/Javascript 中显示/编辑 ActiveStorage S3 图像?

】如何使用Dropzone在React/Javascript中显示/编辑ActiveStorageS3图像?【英文标题】:HowcanIdisplay/editanActiveStorageS3imageinReact/JavascriptusingDropzone?【发布时间】:2022-01-1411:45:38【问题描述】:我目前正在使用RubyonRails+React+Redux+Dropzone来上传... 查看详情

如何在Javascript中删除上传的图像?

】如何在Javascript中删除上传的图像?【英文标题】:HowtodeleteuploadedimageinJavascript?【发布时间】:2017-07-0923:02:15【问题描述】:我正在开发我的第一个网络应用程序。它允许用户发布该地区发生的事件,类似于eventbrite。我正在使... 查看详情

在 JavaScript 中调整 Base-64 图像的大小而不使用画布

】在JavaScript中调整Base-64图像的大小而不使用画布【英文标题】:ResizeaBase-64imageinJavaScriptwithoutusingcanvas【发布时间】:2014-01-2408:03:26【问题描述】:我需要一种无需使用HTML元素即可在JavaScript中调整图片大小的方法。我的移动HTML... 查看详情

如何让这个表单和按钮在响应式设计中正确调整大小?

】如何让这个表单和按钮在响应式设计中正确调整大小?【英文标题】:HowcanIgetthisformandbuttontoresizecorrectlyinaresponsivedesign?【发布时间】:2012-05-2509:01:16【问题描述】:我正在尝试创建一个自定义小部件,其中包括带有文本输入... 查看详情

如何在没有 javascript 的情况下使用最大高度和宽度来灵活调整 css 图像大小,同时保持图像纵横比?

】如何在没有javascript的情况下使用最大高度和宽度来灵活调整css图像大小,同时保持图像纵横比?【英文标题】:HowcanIhaveflexiblecssimagesizingwithmaxheightandwidthwhilepreservingimageaspectratio,withoutjavascript?【发布时间】:2012-01-2304:32:54【问... 查看详情

如何在 javascript 中获取图像/blob 的 MIME 类型?

】如何在javascript中获取图像/blob的MIME类型?【英文标题】:HowdoIgettheMIMEtypeofanimage/blobinjavascript?【发布时间】:2017-02-1202:14:11【问题描述】:我正在开发一个Chrome扩展程序,我在其中调整用户右键单击的图像大小(实际上是调整... 查看详情

如何通过 ajax 在 javascript 中使用个人 http 标头加载图像(sencha touch 2)

】如何通过ajax在javascript中使用个人http标头加载图像(senchatouch2)【英文标题】:Howloadimagetroughajaxwithpersonalhttpheadersinjavascript(senchatouch2)【发布时间】:2012-05-0916:14:50【问题描述】:我正在开发一个senchatouch应用程序,我有一个... 查看详情

如何在表单中使用图像? [复制]

】如何在表单中使用图像?[复制]【英文标题】:HowcanIuseimagesinaform?[duplicate]【发布时间】:2013-09-3008:32:12【问题描述】:我有三张图片:<imgsrc="%static"img/lt.png"%"/><imgsrc="%static"img/en.png"%"/><imgsrc="%static"img/ru.png"%"/>我... 查看详情

使用 Javascript 调整图像大小后,如何使用 $_POST 通过 PHP 上传

】使用Javascript调整图像大小后,如何使用$_POST通过PHP上传【英文标题】:AfterresizingimageusingJavascript,howtouploadviaPHPusing$_POST【发布时间】:2013-03-1715:25:06【问题描述】:基本上,我尝试编写一个网页,用户可以通过iPhone/Andoid和桌... 查看详情

如何上传/发布多个画布元素

...务器上进行图像大小调整/转换/裁剪。所以我制作了一个javascript界面,用户可以在其中“上传”他们的文件并直接在浏览器中调整大小/裁剪,而无需联系服务 查看详情

在上传到服务器之前使用 JavaScript 在客户端调整图像大小

】在上传到服务器之前使用JavaScript在客户端调整图像大小【英文标题】:Imageresizingclient-sidewithJavaScriptbeforeuploadtotheserver【发布时间】:2011-01-2622:15:44【问题描述】:我正在寻找一种使用JavaScript调整图像客户端大小的方法(真正... 查看详情