如何将过滤器应用于照片并将其保存到数据库 php css javascript

Posted

技术标签:

【中文标题】如何将过滤器应用于照片并将其保存到数据库 php css javascript【英文标题】:how to apply filters to photo and save it to database php css javascript 【发布时间】:2019-02-27 02:29:27 【问题描述】:

我正在尝试制作一个系统,用户可以从他的画廊中选择一张图片,然后对其应用模糊过滤器,然后他可以将该图片上传到数据库,现在我已成功将过滤器应用于图片,但是当我看到上传的图片时,我无法将过滤后的图片上传到数据库中,这是正常的,没有模糊我不确定它出了什么问题

这是我的代码

<?php
$query = "SELECT * FROM users WHERE email='$email'or username = '$email'";
$fire = mysqli_query($con,$query) or die("can not fetch data from database ".mysqli_error($con));
if (mysqli_num_rows($fire)>0) 
  $row = mysqli_fetch_assoc($fire);
  $id = $row['id'];
  $username = $row['fullname'];
  $avatarpath = $row['avatar_path'];



if (isset($_POST['uploadpic'])) 

  $avatar = $_FILES['avatar'];
   $avatar_name = $_FILES['avatar']['name'];
   $avatar_tmpname = $_FILES['avatar']['tmp_name'];
   $avatar_size =  $_FILES['avatar']['size'];
   $avatar_type = $_FILES['avatar']['type'];
   $avatar_ext = pathinfo($avatar_name, PATHINFO_EXTENSION);

   if (!empty($avatar_name)) 
    if ($avatar_size <= 25000000) 
      if ($avatar_ext == "jpg" || $avatar_ext == "jpeg" ||$avatar_ext == "png" ) 
        $chars= "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $rand_dir_name=substr(str_shuffle($chars),0,15);
        mkdir("userdata/user_photos/$rand_dir_name");
         $final_file= "userdata/user_photos/$rand_dir_name/$avatar_name";


   $upload = move_uploaded_file($avatar_tmpname, $final_file);
   if ($upload) 
     $msg = "file uploaded successfully ";
     $query = "INSERT INTO photos(id,uid,image_url,email,date_posted,username,avatar_path) VALUES ('','$id','userdata/user_photos/$rand_dir_name/$avatar_name','$email',NOW(),'$username','$avatarpath')";
     $fire = mysqli_query($con,$query) or die("can not insert file path into database".mysqli_error($con));

     if ($fire) 
       $msg .=" and also inserted into database";
      header("Location:profile.php");
     



        # code...
      else echo "only jpg,jpeg,png, type format allowed";
    elseecho "file size is too large";

   elseecho "please select an image to upload";


  
  



?>
<center>

   <form action="profile.php" method="POST" enctype="multipart/form-data">
      <input type="file" onchange="previewImage(event)" id="file-feild" class="form-control" name="avatar" >

      <button type="submit" name="uploadpic" > <a class="upload" href="profile.php"><i class="fas fa-upload"></i></a></button>

    </form>
  <div class="card">
  <img src="img_avatar.png" id="image-field" style="width:100%">
  <div class="container">

    <input type="button" id="blur" name="button" value="button"  data-filter="blur">
     <input type="button" id="none" name="button" value="button"  data-filter="blur">

  </div>
</div>
</center>



<script src="jquery.min.js"></script>
<script type="text/javascript">
  $(document).on('click','#blur',function(e)
$('#image-field').css('filter':'blur(20px)')
 );
</script>
<script type="text/javascript">
  $(document).on('click','#none',function(e)
$('#image-field').css('filter':'blur(0px)')
 );
</script>

<script type="text/javascript">


  function previewImage(event) 
   var reader = new FileReader();
   var imageField = document.getElementById("image-field")
   reader.onload = function()
    if(reader.readyState == 2)
      imageField.src = reader.result;
    
   
    reader.readAsDataURL(event.target.files[0]);
  
</script>

感谢您的任何帮助

【问题讨论】:

请参阅准备好的和绑定的查询 【参考方案1】:

CSS 模糊是客户端操作,而您正在寻找服务器端操作(您希望将操作后的图像保存在服务器上)。换句话说,CSS 要求将非模糊图像存储在服务器上并发送到浏览器,而您希望将模糊图像存储在服务器上。因此,您必须忘记 CSS。模糊处理应该在服务器端语言中完成,比如 PHP,使用 GD 或 ImageMagick。

这是blurring in PHP上的帖子。

【讨论】:

有什么方法可以让用户看到其图像的实时变化,然后当他点击上传时,特定的过滤器会像 instagram 一样在上传代码上运行 您可以创建效果,但它不会那样工作。它应该像这样工作:第 1 步 = 上传图片。第 2 步 = 使用 CSS 预览模糊。第 3 步 = 使用与第 2 步相同的设置使用 PHP 模糊服务器图像。 有没有例子可以显示这种东西,请帮助我

以上是关于如何将过滤器应用于照片并将其保存到数据库 php css javascript的主要内容,如果未能解决你的问题,请参考以下文章

需要一些 iphone SDK 代码(将应用内图片保存到照片中)

如何从照片库加载照片并将其存储到应用程序项目中?

用相机意图拍摄照片并将其保存到文件中

我正在将照片保存在 android 图库上,但照片保存有延迟

我们如何计算 rgb 的梯度并将其应用于 sobel

如何使用带有 php 的cropit jquery 插件裁剪和上传照片