CSDN问答——精选问答Vol.4

Posted 问答小精灵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSDN问答——精选问答Vol.4相关的知识,希望对你有一定的参考价值。

《精选问答》挑选CSDN问答频道每周最新最热的优质回答,为大家提供可信赖的优质解答,点击查看更多已解决问题

目录

1、MATLAB图像处理怎么将彩色图片慢慢转化成黑白图片?

2、laravel框架下js实现的查询与分页

3、js如何可以改变一个数据,然后也可以变回之前的样子

4、在循环中更新MPAndroidChart图表不刷新是为什么

5、nodejs,如何把request方法得到的json返回值传递出去并用变量接受

6、python 删除列表操作报错

7、js 如何提取http请求url字符串里的特定规则的name和password

8、fetch请求本地资源文件失败的解决方法


1、MATLAB图像处理怎么将彩色图片慢慢转化成黑白图片?

问题描述:

MATLAB初学者,需要做出那种为纪念英雄人物,播放彩色图片,然后慢慢变到灰色的效果。想法是做成gif,但是中间那由彩色变成黑白的渐变过程不知道怎么进行图像的运算。

 

解决方案——来自@qq_34124780的回答

我讲个思路你可以自己实现下。

1、确定下彩色转灰度图的结果,看下结果是否满意,或者结果灰度图不满意的要先处理下,得到最终的灰度图。

2、实现渐变。如果你将一张灰度图保存下来看下,你就会发现这张图片RGB三个通道的灰阶是一样的。也就是说,你将一张彩色的图片的RGB三个通道调整一样的结果的话,那么虽然还是三通道的,但是效果就是一张灰度图。那么现在要做的就是将原来的图片RGB三个通道的每个像素值转成第一步中的灰度值。

3、举了例子来说,比如【0,0】这个像素位置的RGB是【120,80,144】,那么你处理过后的灰阶值是90,你计划用10帧图片达成gif,那你就是120-->90,80-->90,144-->90,中间每个通道的渐变灰阶值就是(90-120)/10=-3,+1,-5.4,保存每一帧,matlab不知道有没有函数可以直接做成gif,最后的效果就是渐变的,当然这个是三个通道一致的线性渐变。

4、实际上为了颜色均衡,RGB三个通道不是渐变的,而是有一个系数的,你需要自己去换算下系数,最常见的Gray = R*0.299 + G*0.587 + B*0.114

本题更多回答戳链接:https://ask.csdn.net/questions/7439855


2、laravel框架下js实现的查询与分页

问题描述:

目前在laravel下js实现的一个瞬时查询效果,这样一来貌似使得paginate函数变得不可用。

可否请教下如何在此基础上也实现js的分页搜索效果。

视图页面:

<form action="" method="get" class="box-tools">
    <div class="box-tools">
        <div class="input-group input-group-sm hidden-xs" style="width: 750px;">
            <input type="text" name="table_search" id="myInput" onkeyup="myFunction()" placeholder="姓名" value="{{ request()->get('table_search','') }}" >

    {{--        <div class="input-group-btn">
                <button type="submit" class="btn btn-default"><i class="fa fa-search"></i></button>
            </div>         --}}
        </div>
    </div>
</form>
</div>
<div class="box-body table-responsive no-padding">
    <table id="MyTable" class="table table-hover">
        <tr>
            <th>学生姓名</th>
            <th>联系电话</th>
            <th>缴费状态</th>
            <th>星级</th>
            <th>提醒</th>
            <th>项目</th>
            <th>项目类别</th>
            <th>信息录入人</th>
        </tr>
        @foreach($data as $obj)
        <tr>
            <input type="hidden" name="student_id" value="{{ $obj->id }}">
            <td><a href="">{{ $obj->name }}</a></td>
            <td><a href="">{{ $obj->tel }}</a></td>
            <td><a href="">{{ $obj->payment_status_id }}</a></td>
            <td><a href="">{{ $obj->stat_lv }}</a></td>
            <td><a href="">{{ $obj->notification }}</a></td>
            <td><a href="">{{ $obj->project_id }}</a></td>
            <td><a href="">{{ $obj->project_type_id }}</a></td>
            <td><a href="">{{ $obj->user_id }}</a></td>
            <td>
                <a href="{{ $obj->id }}/detail" class="btn btn-xs btn-primary">详细/修改</a>
                <a href="{{ $obj->id }}/delete" class="btn btn-xs btn-danger">删除</a>

            </td>
        </tr>

js页面:

 

解决方案——来自@三七小浩的回答

js的分页,就是根据数组先排序,同样根据当前页pageIndex和每页显示数量pageSize来控制显示数组里的那些元素,可以用splice等方法来实现,当然还得用一个数组来备份一下全部的数据

本题更多回答戳链接:https://ask.csdn.net/questions/7440614


 

3、js如何可以改变一个数据,然后也可以变回之前的样子

问题描述:

例如:

[{bool:true},{bool:flase},{bool:true}]

我遍历之后让他变成,然后我如何让他变回之前的样子?

[{bool:flase},{bool:flase},{bool:flase}]

 

解决方案——来自@CSDN专家-showbo的回答

用一个变量存储原来的数据,由于是对象,可以json.stringify转字符串后,需要全部还原时在parse还原

var arr = [{ bool: true }, { bool: false }, { bool: true }];
    var old = JSON.stringify(arr);
    arr.forEach(i => i.bool = false);
    console.log(JSON.stringify(arr));
 
    setTimeout(() => {
        arr = JSON.parse(old);
        console.log(JSON.stringify(arr));
 
    }, 3000)//3s后还原

本题更多回答戳链接:https://ask.csdn.net/questions/7439820


4、在循环中更新MPandroidChart图表不刷新是为什么

问题描述:

我想要在一个循环中不断更新图表中的数据,然后让图表刷新动态显示,但是怎么都不行,只能所有的数据全部加载完之后一块显示,请问是什么原因。

这是我的循环更新部分的代码,CalPosition.position是要加载的数据列表,改来改去就是不能一个点一个点的更新显示,只能最后一块显示,总共也就1600条数据,难道是因为数据太多反应不过来吗?

int num=0;
        while(num<CalPosition.positions.size()){
 
            float[] position=CalPosition.positions.get(num);
 
            if(zlineData!=null){
                LineDataSet zlineDataSet= (LineDataSet) zlineData.getDataSetByIndex(0);
                zlineData.addEntry(new Entry(zlineDataSet.getEntryCount(),position[2]),0);
 
                zlineChart.notifyDataSetChanged();
                zlineChart.invalidate();
                Log.e("zlinechart", "startDraw: "+"正在更新");
 
            }
            if(ylineData!=null){
                LineDataSet ylineDataSet= (LineDataSet) ylineData.getDataSetByIndex(0);
                ylineData.addEntry(new Entry(ylineDataSet.getEntryCount(),position[1]),0);
 
                ylineChart.notifyDataSetChanged();
                ylineChart.invalidate();
                Log.e("ylinechart", "startDraw: "+"正在更新");
            }
 
            num++;
        }

解决方案——来自@CSDN专家-link的回答

线程同一时间只能干一件事,它正在循环处理数据呢,没时间刷新显示。想一边显示,又一边处理,就要把数据处理放到独立的线程中,互不干扰才行。可以在这个类里写个函数线程,将处理好的数据发给主线程显示就可以

本题更多回答戳链接:https://ask.csdn.net/questions/7437750


5、nodejs,如何把request方法得到的json返回值传递出去并用变量接受

问题描述:

这里的 response值只能控制台输出,我先把它return出来,调用这个send函数就可以得到返回的json值,因为我想再写一个处理返回值的函数把返回值传进去再处理

类似这样:var data=send() data可以获得request的返回值 或者有什么其他方法可以在其他函数中调用request返回的值?

var request = require('request');
function send(){
 
var options = {
    'method': 'POST',
    'url': 'http://https://mail.georgebrown.ca/login',
    'headers': {
        'X-Requested-With': 'XMLHttpRequest',
        'Content-Type': 'application/x-www-form-urlencoded',
        'Accept': 'text/html, application/xhtml+xml, */*',
        
    },
    form: {
        'account': 'lch66',
        'password': '123456',
        'token': '-',
        '_time': '1622207143899',
    }
};
    request(options, function (error, response) {
    if (error) throw new Error(error);
    console.log(response.body);
});}

解决方案——来自@CSDN专家-showbo的回答

需要用到数据时传递回调函数,在success成功后执行回调传递数据

var request = require('request');
function send(callback){
var options = {
    'method': 'POST',
    'url': 'http://https://mail.georgebrown.ca/login',
    'headers': {
        'X-Requested-With': 'XMLHttpRequest',
        'Content-Type': 'application/x-www-form-urlencoded',
        'Accept': 'text/html, application/xhtml+xml, */*',
    },
    form: {
        'account': 'lch66',
        'password': '123456',
        'token': '-',
        '_time': '1622207143899',
    }
};
    request(options, function (error, response) {
    if (error) throw new Error(error);
    callback(response.body);
});}
 
function getData(){
     send((body)=>{
          console.log(body)
    })
}
getData();

本题更多回答戳链接:https://ask.csdn.net/questions/7440101


6、python 删除列表操作报错

问题描述:

python 都是删除列表操作,怎么一个报错一个不报错

list=[10,20,30,440,50,60,30]
print('------------------------移除一个指定元素-------------------')
list.remove(30)
print(list)            #有重复元素时只删除第一个元素
#list.remove(1000)      #当要删除的元素在列表中不存在时,报错:ValueError: list.remove(x): x not in list
print('------------------第一次移除元素之后------------------------')
print(list)
print('----------------  删除指定位置元素------pop-------------------------')
list.pop(3)
print(list)
#list.pop(33)          #指定的索引不存在,位置异常:IndexError: pop index out of range
list.pop()            #不写参数时删除最后一个元素
print(list)
print('----------------------切片删除元素,至少一个元素,将产生一个新的列表对象----------------------------')
new_list=list[1:3]
print('原列表',list)
print('切片后',new_list)             #新列表为指定的元素
 
print('------------------------不产生新的列表对象,删除原列表中的元素-------切片操作------------------')
list[1:3]=[]                          #用空列表代替指定位置的切片操作
print(list)                        #操作后,删除指定位置的元素
 
 
print('-----------------清除列表中的所有元素----clear------------------')
list.clear()
print(list)
 
print('--------------------删除列表对象  del语句---------------------------------')
del list  #之后list这个列表对象不存在了
print(list)
del new_list
print(new_list)                    #NameError: name 'new_list' is not defined

解决方案——来自@CSDN专家-天际的海浪​​​​​​​的回答

输出的<class 'list'>的原因是:python一般有3个层次的作用域范围:函数的局部作用域、全局作用域 和 内置作用域。

作用域的范围排序是按照从内到外,list 系统内置的函数是在最外层的内置作用域中。

你用list做变量名。是在全局作用域中,就暂时遮蔽了内置作用域中的list内置函数。等用 del list 删除了全局作用域中的list变量之后,就又暴露出了内置作用域中的list内置函数,print(list) 输出的<class 'list'>就是内置作用域中的list内置函数。

本题更多回答戳链接:https://ask.csdn.net/questions/7438444


7、js 如何提取http请求url字符串里的特定规则的name和password

问题描述:

例如一个url http://pis0sion:zihuang2010=-0@127.0.0.105:9091/auth,我想提取出pis0sion为name    zihuang2010=-0为password。通过正则匹配吗还是有api可以调用。

解决方案——来自@风雪一更​​​​​​​的回答

var r0 = new RegExp("://.*?@","i");

这个正则匹配:// 和 @ 中间的字符串,你匹配完可以打印出来看看

取到之后用split(":"),转成数组就行了,arr[0]就是name,arr[1]就是password

var str="http://pis0sion:zihuang2010=-0@127.0.0.105:9091/auth"
var r0 = new RegExp("://.*?@","i");
var newstr = str.match(r0)[0]; // 输出  ://pis0sion:zihuang2010=-0@
var arr = newstr.substring(3,newstr.length-1).split(":");
console.log(arr) //["pis0sion", "zihuang2010=-0"]

本题更多回答戳链接:https://ask.csdn.net/questions/7439306


8、fetch请求本地资源文件失败的解决方法

问题描述:

本人在利用VScode编写前端代码时用fetch方法请求本地资源后,控制台显示报错。请问如何解决?

methods:{
                handfetch(){
                    fetch("json/test.json")
                    .then(res=>res.json())
                    .then(res=>{console.log(res)})
                }
            }

控制台报错显示:

VScode上安装了live-server,并且已经打开了,但是打开的页面不是http协议的。

打开之后的路径是这样的:

 

解决方案——来自@三七小浩的回答

fetch请求的开头必须是http或者https这种完整路径的,这里没必要用fetch哦,如果是本地的文件,你直接用require('json/test.json')这样的就可以了,或者你的代码支持import,这样更简单,更容易一些

本题更多回答戳链接:https://ask.csdn.net/questions/7439921

 

以上是关于CSDN问答——精选问答Vol.4的主要内容,如果未能解决你的问题,请参考以下文章

CSDN问答——精选问答Vol.8

CSDN问答——精选问答Vol.7

CSDN问答——精选问答Vol.9

CSDN问答——精选问答Vol.11

CSDN问答——精选问答Vol.6

CSDN问答——精选问答Vol.5