怎么怎样上传qq头像头像

如何上传微信头像,微信头像上传不了,微信怎么上传头像 - 唯美图片网
如何上传微信头像
共0页/条记录
其他人在看分享给好友:
本文名称:本文地址:/touxiang/46745/
上一篇:下一篇:修改头像如何上传照片呢
个人资料的修改头像栏为什么一直上传不起照片呢?上传了很多次总是没有反应!
 3 个回答
已有 1 人关注此问题 &
回答了问题 .
我的也是,是不是要先绑定邮箱才能上传啊
回答了问题 .
我也是死活不成功,随便点了一张图片反而就成功了,再想改又改不了了
回答了问题 .
能具体说明一下是怎么无法上传图片呢?可不可以截个图上来?另外,浏览器的型号以及版本是多少呢?
/question/504790.htmlFLASH头像上传,FLASH头像上传插件,头像上传插件,头像上传组件-富头像上传编辑器
富头像上传编辑器是一款支持本地上传、预览、视频拍照和网络加载的flash头像编辑上传插件,可缩放、裁剪、旋转、定位和调色等...
小巧的身材:文件大小仅仅只有 48 KB,而新浪的头像编辑器组件有 58.1 KB,更有甚者达 80 KB 之多。
漂亮的外观:灰色系的外观设计,适用于所有风格的站点。还可轻松地实现换肤。
强大的功能:原图支持本地上传、视频拍照和网络加载,图片编辑有缩放、裁剪、旋转、定位和调色等功能。
丰富的接口:可自定义头像(大小、数目...)、所有文本(包括其字体,大小,颜色,方便扩展多语言站点)、可在外部接口中定义选项卡、按钮...
跨平台兼容:运行环境Flash Player 10.1+,任何浏览器 IE All、Firefox、 Chrome、Opera...都正常使用。
极致的体验:人性化的设计方式,细节上精心的处理,用户使用起来得心应手。
下载插件包解压后,在页面的 head 标签内引入以下脚本文件
&script type=&text/javascript& src=&/scripts/swfobject.js&&&/script&
&script type=&text/javascript& src=&/scripts/fullAvatarEditor.js&&&/script&
二:调用方法
new fullAvatarEditor(['*/FullAvatarEditor.swf',] ['*/expressInstall.swf',] swfContainerID [,height] [,width], flashvars, [callback]);
返回值:object,该对象可调用call方法,请参见 。
*/FullAvatarEditor.swf
插件主swf文件的路径,文件名必须是FullAvatarEditor.swf
*/expressInstall.swf
expressInstall.swf文件的路径,文件名必须是expressInstall.swf
swfContainerID
用以包裹Flash的HTML元素的ID。
Flash的高度,默认为 600。
Flash的宽度,默认为 630。
将要传递到 flash 的 key/value 参数,请参见 。
flash执行某些操作时的回调函数,请参见 。
三:简单示例
&!DOCTYPE html&
&meta charset=&utf-8&/&
&title&Simple demo&/title&
&script type=&text/javascript& src=&/scripts/swfobject.js&&&/script&
&script type=&text/javascript& src=&/scripts/fullAvatarEditor.js&&&/script&
&div style=&width:800margin: 0&&
&h1 style=&text-align:center&&富头像上传编辑器演示&/h1&
&p id=&swfContainer&&
本组件需要安装Flash Player后才可使用,请从
&a href=&/go/getflashplayer&&这里&/a&
下载安装。
&button type=&button& id=&upload&&自定义上传按钮&/button&
&script type=&text/javascript&&
swfobject.addDomLoadEvent(function () {
var swf = new fullAvatarEditor(&fullAvatarEditor.swf&, &expressInstall.swf&, &swfContainer&, {
id : &swf&,
upload_url : &/upload.php?userid=999&username=looselive&,
method : &post&,
src_url : &/samplePictures/Default.jpg&,
src_upload : 2
}, function (msg) {
switch(msg.code)
case 1 : alert(&页面成功加载了组件!&);
case 2 : alert(&已成功加载图片到编辑面板。&);
if(msg.type == 0)
alert(&摄像头已准备就绪且用户已允许使用。&);
else if(msg.type == 1)
alert(&摄像头已准备就绪但用户未允许使用!&);
alert(&摄像头被占用!&);
if(msg.type == 0)
if(msg.content.sourceUrl)
alert(&原图片已成功保存至服务器,url为:\n& + msg.content.sourceUrl);
alert(&头像已成功保存至服务器,url为:\n& + msg.content.avatarUrls.join(&\n&));
document.getElementById(&upload&).onclick=function(){
swf.call(&upload&);
v2.3:修复头像与实际选取区域偏移 1 像素的BUG;&&&&&&&&&&修复默认加载的原图如果有定位数据时图片不显示的BUG。
v2.2:修复上传的原始图片没有扩展名的Bug。
v2.1:新增上传提交方式的参数:(值为 get 或 post);&&&&&&&&&&修善构造函数可定义主swf(FullAvatarEditor.swf)和快速安装flash的swf(expressInstall.swf)的路径。
v2.0:新增在上传完成时(无论成功和失败),是否显示表示上传结果图标的参数:;&&&&&&&&&&新增可自定义原图和头像表单域名称的参数: 和 。
v1.9:修复了原图url中带旋转参数时,另外上传/加载的图片会沿用当前旋转值的错误;&&&&&&&&&&视图参数()新增选取框尺寸参数,至此视图已臻佳境。
v1.8:将追加到上传接口url后的参数的提交方式更改为POST,避免参数中含有特殊字符(如base64中的+号)时产生错误。&&&&&&&&&&修复了将头像颜色调整工具隐藏(=false)时,部分版本的 Flash Player 产生异常的错误;&&&&&&&&&&修复了部分奇葩的图片在编码时产生异常的错误。
v1.7:修复了当加载的原图url中带视图参数()时,旋转值未正确初始化的错误;&&&&&&&&&&优化了生成头像的速度。
v1.6:修复了后台只能获取(上传图片的接口)中首个参数的问题;&&&&&&&&&&提升了生成的头像图片的质量。
v1.5:新增头像保存时的缩放系数(需求大尺寸头像而又不想被其破坏页面布局时很有用);&&&&&&&&&&新增基于原图的初始化参数(表单字段,用于修改头像时保证视图跟保存头像时一致,帮助提升用户体验)。
v1.4:修复了上传原图时如果是使用摄像头拍照的方式而得到的原图并非来自摄像头的错误。
v1.3:修复头像颜色调整未渲染到生成的图片的bug;&&&&&&&&&&新增生成的图片的质量控制参数 。
v1.2:新增是否显示头像颜色调整工具的参数 。
v1.1:将各矩形框的参数独立出来,更加方便外观的表现。
谁在使用?Android图片上传(头像裁切+原图原样)
还是那句话,最近项目比较忙拖了很久这篇文章终于完成了!
先看一下效果图:
(一)头像裁切、上传服务器(效果图)
一般都是有圆形显示头像的,这里我自定义了一个ImageView,页面很干净但是看着很上档次吧!
点击头像从底部弹出一个对话框,提示用户头像来自相机或者相册,这都是常规流程。
上传完成后默认的&程序员头像&换成了萌妹子
(二)普通图片上传服务器(效果图)
模仿QQ空间发动态的布局随意捏造一个界面出来
点击添加图片从底部弹出一个对话框,提示用户图片来自相机或者相册,这也都是常规流程。
上传过程中,有可能图片很大,显示一个进度圈(其实头像上传也有,只是文件小,还没显示就上传完成了)
上传完成后把刚才的照片亮出来显示到按钮的地方,当然大家根据需要还可以自己扩展(比如长按抖动出现删除、继续添加N张等等)。
下面简单铺一下代码:
(一)头像裁切、上传服务器(代码)
这里上边的按钮是头像的点击事件,弹出底部的头像选择框,下边的按钮跳到下个页面,进行原图上传。
public void onClick(View v) {
switch (v.getId()) {
case R.id.avatarImg:// 更换头像点击事件
menuWindow = new SelectPicPopupWindow(mContext, itemsOnClick);
menuWindow.showAtLocation(findViewById(R.id.mainLayout),
Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);
case R.id.loginBtn://登录按钮跳转事件
startActivity(new Intent(mContext, UploadActivity.class));
弹出窗绑定一个按钮事件
//为弹出窗口实现监听类
private OnClickListener itemsOnClick = new OnClickListener() {
public void onClick(View v) {
menuWindow.dismiss();
switch (v.getId()) {
case R.id.takePhotoBtn:
Intent takeIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//下面这句指定调用相机拍照后的照片存储的路径
takeIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File(Environment.getExternalStorageDirectory(), IMAGE_FILE_NAME)));
startActivityForResult(takeIntent, REQUESTCODE_TAKE);
// 相册选择图片
case R.id.pickPhotoBtn:
Intent pickIntent = new Intent(Intent.ACTION_PICK, null);
// 如果朋友们要限制上传到服务器的图片类型时可以直接写如:image/jpeg 、 image/png等的类型
pickIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, image/*);
startActivityForResult(pickIntent, REQUESTCODE_PICK);
为图像选取返回的接收处理
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUESTCODE_PICK:// 直接从相册获取
startPhotoZoom(data.getData());
} catch (NullPointerException e) {
e.printStackTrace();// 用户点击取消操作
case REQUESTCODE_TAKE:// 调用相机拍照
File temp = new File(Environment.getExternalStorageDirectory() + / + IMAGE_FILE_NAME);
startPhotoZoom(Uri.fromFile(temp));
case REQUESTCODE_CUTTING:// 取得裁剪后的图片
if (data != null) {
setPicToView(data);
super.onActivityResult(requestCode, resultCode, data);
把图片显示出来,然后上传
* 裁剪图片方法实现
* @param uri
public void startPhotoZoom(Uri uri) {
Intent intent = new Intent(com.android.camera.action.CROP);
intent.setDataAndType(uri, image/*);
// crop=true是设置在开启的Intent中设置显示的VIEW可裁剪
intent.putExtra(crop, true);
// ectX aspectY 是宽高的比例
intent.putExtra(aspectX, 1);
intent.putExtra(aspectY, 1);
// outputX outputY 是裁剪图片宽高
intent.putExtra(outputX, 300);
intent.putExtra(outputY, 300);
intent.putExtra(return-data, true);
startActivityForResult(intent, REQUESTCODE_CUTTING);
* 保存裁剪之后的图片数据
* @param picdata
private void setPicToView(Intent picdata) {
Bundle extras = picdata.getExtras();
if (extras != null) {
// 取得SDCard图片路径做显示
Bitmap photo = extras.getParcelable(data);
Drawable drawable = new BitmapDrawable(null, photo);
urlpath = FileUtil.saveFile(mContext, temphead.jpg, photo);
avatarImg.setImageDrawable(drawable);
// 新线程后台上传服务端
pd = ProgressDialog.show(mContext, null, 正在上传图片,请稍候...);
new Thread(uploadImageRunnable).start();
* 使用HttpUrlConnection模拟post表单进行文件
* 上传平时很少使用,比较麻烦
* 原理是: 分析文件上传的数据格式,然后根据格式构造相应的发送给服务器的字符串。
Runnable uploadImageRunnable = new Runnable() {
public void run() {
if(TextUtils.isEmpty(imgUrl)){
Toast.makeText(mContext, 还没有设置上传服务器的路径!, Toast.LENGTH_SHORT).show();
Map textParams = new HashMap();
Map fileparams = new HashMap();
// 创建一个URL对象
URL url = new URL(imgUrl);
textParams = new HashMap();
fileparams = new HashMap();
// 要上传的图片文件
File file = new File(urlpath);
fileparams.put(image, file);
// 利用HttpURLConnection对象从网络中获取网页数据
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置连接超时(记得设置连接超时,如果网络不好,在超过默认时间会收回资源中断操作)
conn.setConnectTimeout(5000);
// 设置允许输出(发送POST请求必须设置允许输出)
conn.setDoOutput(true);
// 设置使用POST的方式发送
conn.setRequestMethod(POST);
// 设置不使用缓存(容易出现问题)
conn.setUseCaches(false);
conn.setRequestProperty(Charset, UTF-8);//设置编码
// 在开始用HttpURLConnection对象的setRequestProperty()设置,就是生成HTML文件头
conn.setRequestProperty(ser-Agent, Fiddler);
// 设置contentType
conn.setRequestProperty(Content-Type, multipart/form- boundary= + NetUtil.BOUNDARY);
OutputStream os = conn.getOutputStream();
DataOutputStream ds = new DataOutputStream(os);
NetUtil.writeStringParams(textParams, ds);
NetUtil.writeFileParams(fileparams, ds);
NetUtil.paramsEnd(ds);
// 对文件流操作完,要记得及时关闭
os.close();
// 服务器返回的响应吗
int code = conn.getResponseCode(); // 从Internet获取网页,发送请求,将网页以流的形式读回来
// 对响应码进行判断
if (code == 200) {// 返回的响应码200,是成功
// 得到网络返回的输入流
InputStream is = conn.getInputStream();
resultStr = NetUtil.readString(is);
Toast.makeText(mContext, 请求URL失败!, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
handler.sendEmptyMessage(0);// 执行耗时的方法之后发送消给handler
Handler handler = new Handler(new Handler.Callback() {
public boolean handleMessage(Message msg) {
switch (msg.what) {
pd.dismiss();
// 返回数据示例,根据需求和后台数据灵活处理
// {status:1,statusMessage:上传成功,imageUrl:http://120.24.219.49/726287_temphead.jpg}
JSONObject jsonObject = new JSONObject(resultStr);
// 服务端以字符串&1&作为操作成功标记
if (jsonObject.optString(status).equals(1)) {
BitmapFactory.Options option = new BitmapFactory.Options();
// 压缩图片:表示缩略图大小为原始图片大小的几分之一,1为原图,3为三分之一
option.inSampleSize = 1;
// 服务端返回的JsonObject对象中提取到图片的网络URL路径
String imageUrl = jsonObject.optString(imageUrl);
Toast.makeText(mContext, imageUrl, Toast.LENGTH_SHORT).show();
Toast.makeText(mContext, jsonObject.optString(statusMessage), Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
(二)普通图片上传服务器(代码)
直接从这里开始,和头像那里基本没什么区别,我把拍照什么的单独抽出了方法,思路更清晰
//为弹出窗口实现监听类
private OnClickListener itemsOnClick = new OnClickListener() {
public void onClick(View v) {
// 隐藏弹出窗口
menuWindow.dismiss();
switch (v.getId()) {
case R.id.takePhotoBtn:// 拍照
takePhoto();
case R.id.pickPhotoBtn:// 相册选择图片
pickPhoto();
case R.id.cancelBtn:// 取消
* 拍照获取图片
private void takePhoto() {
// 执行拍照前,应该先判断SD卡是否存在
String SDState = Environment.getExternalStorageState();
if (SDState.equals(Environment.MEDIA_MOUNTED)) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
* 需要说明一下,以下操作使用照相机拍照,拍照后的图片会存放在相册中的
* 这里使用的这种方式有一个好处就是获取的图片是拍照后的原图
* 如果不使用ContentValues存放照片路径的话,拍照后获取的图片为缩略图不清晰
ContentValues values = new ContentValues();
photoUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(intent, SELECT_PIC_BY_TACK_PHOTO);
Toast.makeText(this, 内存卡不存在, Toast.LENGTH_LONG).show();
* 从相册中取图片
private void pickPhoto() {
Intent intent = new Intent();
// 如果要限制上传到服务器的图片类型时可以直接写如:image/jpeg 、 image/png等的类型
intent.setType(image/*);
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, SELECT_PIC_BY_PICK_PHOTO);
处理一下图片选取的页面回调
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// 点击取消按钮
if(resultCode == RESULT_CANCELED){
// 可以使用同一个方法,这里分开写为了防止以后扩展不同的需求
switch (requestCode) {
case SELECT_PIC_BY_PICK_PHOTO:// 如果是直接从相册获取
doPhoto(requestCode, data);
case SELECT_PIC_BY_TACK_PHOTO:// 如果是调用相机拍照时
doPhoto(requestCode, data);
super.onActivityResult(requestCode, resultCode, data);
接下来就是显示图片和上传服务器了,上传和头像是同一个流程,只是不进行裁切
* 选择图片后,获取图片的路径
* @param requestCode
* @param data
private void doPhoto(int requestCode, Intent data) {
// 从相册取图片,有些手机有异常情况,请注意
if (requestCode == SELECT_PIC_BY_PICK_PHOTO) {
if (data == null) {
Toast.makeText(this, 选择图片文件出错, Toast.LENGTH_LONG).show();
photoUri = data.getData();
if (photoUri == null) {
Toast.makeText(this, 选择图片文件出错, Toast.LENGTH_LONG).show();
String[] pojo = { MediaColumns.DATA };
// The method managedQuery() from the type Activity is deprecated
//Cursor cursor = managedQuery(photoUri, pojo, null, null, null);
Cursor cursor = mContext.getContentResolver().query(photoUri, pojo, null, null, null);
if (cursor != null) {
int columnIndex = cursor.getColumnIndexOrThrow(pojo[0]);
cursor.moveToFirst();
picPath = cursor.getString(columnIndex);
// 4.0以上的版本会自动关闭 (4.0--14;; 4.0.3--15)
if (Integer.parseInt(Build.VERSION.SDK) & 14) {
cursor.close();
// 如果图片符合要求将其上传到服务器
if (picPath != null && ( picPath.endsWith(.png) ||
picPath.endsWith(.PNG) ||
picPath.endsWith(.jpg) ||
picPath.endsWith(.JPG))) {
BitmapFactory.Options option = new BitmapFactory.Options();
// 压缩图片:表示缩略图大小为原始图片大小的几分之一,1为原图
option.inSampleSize = 1;
// 根据图片的SDCard路径读出Bitmap
Bitmap bm = BitmapFactory.decodeFile(picPath, option);
// 显示在图片控件上
picImg.setImageBitmap(bm);
pd = ProgressDialog.show(mContext, null, 正在上传图片,请稍候...);
new Thread(uploadImageRunnable).start();
Toast.makeText(this, 选择图片文件不正确, Toast.LENGTH_LONG).show();
* 使用HttpUrlConnection模拟post表单进行文件
* 上传平时很少使用,比较麻烦
* 原理是: 分析文件上传的数据格式,然后根据格式构造相应的发送给服务器的字符串。
Runnable uploadImageRunnable = new Runnable() {
public void run() {
if(TextUtils.isEmpty(imgUrl)){
Toast.makeText(mContext, 还没有设置上传服务器的路径!, Toast.LENGTH_SHORT).show();
Map textParams = new HashMap();
Map fileparams = new HashMap();
// 创建一个URL对象
URL url = new URL(imgUrl);
textParams = new HashMap();
fileparams = new HashMap();
// 要上传的图片文件
File file = new File(picPath);
fileparams.put(image, file);
// 利用HttpURLConnection对象从网络中获取网页数据
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置连接超时(记得设置连接超时,如果网络不好,Android系统在超过默认时间会收回资源中断操作)
conn.setConnectTimeout(5000);
// 设置允许输出(发送POST请求必须设置允许输出)
conn.setDoOutput(true);
// 设置使用POST的方式发送
conn.setRequestMethod(POST);
// 设置不使用缓存(容易出现问题)
conn.setUseCaches(false);
// 在开始用HttpURLConnection对象的setRequestProperty()设置,就是生成HTML文件头
conn.setRequestProperty(ser-Agent, Fiddler);
// 设置contentType
conn.setRequestProperty(Content-Type, multipart/form- boundary= + NetUtil.BOUNDARY);
OutputStream os = conn.getOutputStream();
DataOutputStream ds = new DataOutputStream(os);
NetUtil.writeStringParams(textParams, ds);
NetUtil.writeFileParams(fileparams, ds);
NetUtil.paramsEnd(ds);
// 对文件流操作完,要记得及时关闭
os.close();
// 服务器返回的响应吗
int code = conn.getResponseCode(); // 从Internet获取网页,发送请求,将网页以流的形式读回来
// 对响应码进行判断
if (code == 200) {// 返回的响应码200,是成功
// 得到网络返回的输入流
InputStream is = conn.getInputStream();
resultStr = NetUtil.readString(is);
Toast.makeText(mContext, 请求URL失败!, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
handler.sendEmptyMessage(0);// 执行耗时的方法之后发送消给handler
Handler handler = new Handler(new Handler.Callback() {
public boolean handleMessage(Message msg) {
switch (msg.what) {
pd.dismiss();
JSONObject jsonObject = new JSONObject(resultStr);
// 服务端以字符串&1&作为操作成功标记
if (jsonObject.optString(status).equals(1)) {
// 用于拼接发布说说时用到的图片路径
// 服务端返回的JsonObject对象中提取到图片的网络URL路径
String imageUrl = jsonObject.optString(imageUrl);
// 获取缓存中的图片路径
Toast.makeText(mContext, imageUrl, Toast.LENGTH_SHORT).show();
Toast.makeText(mContext, jsonObject.optString(statusMessage), Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'}

我要回帖

更多关于 怎样上传qq头像 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信