快速剪切头像 生成定制图片 自动保存至服务器 (剪切头像生成图片保存服务器)

在当前互联网社交化的环境下,个性化的头像逐渐成为用户展示自我文化和表达身份认同的重要方式。许多网站和应用程序都提供了头像上传功能,使用户能够选择或拍摄自己的照片或图像并用作头像。

然而,许多用户在上传头像时遇到了困难,包括大小不符合要求、红眼、暗淡或不利于剪裁到合适尺寸的照片。在传统的设置过程中,许多用户需要进行复制、裁剪和粘贴等多重操作,才能将图片调整到合适的比例和尺寸,这极大地耗费了他们的时间和精力。

为了解决这些问题,开发人员推出了快速剪切头像应用程序。这些应用程序是设计用于轻松裁剪和自定义头像的工具,直接自动保存至服务器,减少了多种本地文件和应用程序之间的传输和储存步骤,使头像上传和设置变得更加快捷和简便。

快速剪切头像应用程序使用鼠标或触控板在图像上选择剪切区域。该应用程序自动捕捉所选区域并将其更改为所需的图像大小和比例。剪切功能还允许用户旋转和翻转头像,以更好地适应他们的需要。

这些应用程序还提供了其他一些可选功能,如调整颜色、背景和亮度等,以便用户完全自定义所需的图像效果。用户还可以添加标记、边框和其他特别效果来增加个性。

除了图像自定义外,这些应用程序还极大地简化了上传和保存过程。在实现图像定制之后,用户只需单击”保存”按钮就可以将其自动保存到服务器上,而不必担心图像的传输和储存。

这些应用程序的使用范围非常广泛,可以在各种网站、社交媒体和移动应用程序中使用。这些应用程序有助于增强网站或应用程序的可用性,并提供一种简单而方便的方法来解决头像输入问题。

基于快速剪切头像的应用程序可以提供优化的剪裁和图像处理功能,让用户更方便地自定义头像并减少上传和保存的麻烦。这是一种非常有帮助和实用的工具,受到越来越多用户的欢迎和喜爱。

相关问题拓展阅读:

微信用过的头像会被服务器保存吗

微信头像是保存在微信服务器上的卖旦携,与本地图片库无迟滚关,中伏如果删除了本地图片,微信会重新下载并保存在本地的。

安卓从手机相册获取照片作为头像缓存地址

安卓从手机相册获取照片作为头像缓存地仔枣圆址

回答如下,首先之一步打开电脑包的时候就会觉得岩厅很,第二步念塌打开复制粘贴钱去去哪里找的。

* 1、实现原理:用户打开相册或相机选择相片后,相片经过压缩并设置在控件上,图片在本地sd卡存一份(如果有的话,没大桐有则内部存储,所以还

* 需要判断用户是否挂载了sd卡),然后在服务器上存储一份该图片,当下次再次启桐则动应用时,会默认去sd卡加载该图片,如果本地没有,再会去联网请求

* 2、使用了picasso框架以及自定义BitmapUtils工具类

* 3、记得加上相关权局仿棚限

*

* */

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private ImageView iv;//要设置的头像

private Button btn_photo;//调用相册按钮

private Button btn_camera;//调用相机按钮

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

iv=(ImageView) findViewById(R.id.iv);

btn_photo = (Button) findViewById(R.id.btn_photo);

btn_camera = (Button) findViewById(R.id.btn_camera);

btn_photo.setOnClickListener(this);

btn_camera.setOnClickListener(this);

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.

Intent intent=new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

startActivityForResult(intent,100);

break;

case R.id.

Intent intent2=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

startActivityForResult(intent2,200);

break;

}

}

@RequiresApi(api = Build.VERSION_CODES.KITKAT)

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if(requestCode==100&&resultCode==RESULT_OK&&data!=null){//系统相册

Uri imageData = data.getData();

String path=getPath(imageData);

Bitmap bitmap = BitmapFactory.decodeFile(path);

Bitmap bitmap1 = BitmapUtils.zoom(bitmap, iv.getWidth(), iv.getHeight());

Bitmap bitmap2 = BitmapUtils.circleBitmap(bitmap1);

//加载显示

iv.setImageBitmap(bitmap2);

//bitmap图片上传到服务器……

//bitmap图片保存到本地

saveImage(bitmap2);

}else if(requestCode==200&&resultCode==RESULT_OK&&data!=null){//系统相机

Bitmap bitmap = (Bitmap) data.getExtras().get(“data”);

BitmapUtils.zoom(bitmap,iv.getWidth(),iv.getHeight());

bitmap=BitmapUtils.circleBitmap(bitmap);

//加载显示

iv.setImageBitmap(bitmap);

//bitmap图片上传到服务器……

//bitmap图片保存到本地

saveImage(bitmap);

}

}

/**

* 数据的存储。(5种)

* Bimap:内存层面的图片对象。

*

* 存储—>内存:

* BitmapFactory.decodeFile(String filePath);

* BitmapFactory.decodeStream(InputStream is);

* 内存—>存储:

* bitmap.compress(Bitmap.CompressFormat.PNG,100,OutputStream os);

*/

private void saveImage(Bitmap bitmap) {

File filesDir;

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//判断sd卡是否挂载

//路径1:storage/sdcard/Android/data/包名/files

filesDir = this.getExternalFilesDir(“”);

}else{//手机内部存储

//路径:data/data/包名/files

filesDir = this.getFilesDir();

}

FileOutputStream fos = null;

try {

File file = new File(filesDir,”icon.png”);

fos = new FileOutputStream(file);

bitmap.compress(Bitmap.CompressFormat.PNG, 100,fos);

} catch (FileNotFoundException e) {

e.printStackTrace();

}finally{

if(fos != null){

try {

fos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

//如果本地有,就不需要再去联网去请求

private boolean readImage() {

File filesDir;

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//判断sd卡是否挂载

//路径1:storage/sdcard/Android/data/包名/files

filesDir = getExternalFilesDir(“”);

}else{//手机内部存储

//路径:data/data/包名/files

filesDir = getFilesDir();

}

File file = new File(filesDir,”icon.png”);

if(file.exists()){

//存储—>内存

Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());

iv.setImageBitmap(bitmap);

return true;

}

return false;

}

@RequiresApi(api = Build.VERSION_CODES.KITKAT)

private String getPath(Uri uri) {

int sdkVersion = Build.VERSION.SDK_INT;

//高于4.4.2的版本

if (sdkVersion >= 19) {

Log.e(“TAG”, “uri auth: ” + uri.getAuthority());

if (isExternalStorageDocument(uri)) {

String docId = DocumentsContract.getDocumentId(uri);

String split = docId.split(“:”);

String type = split;

if (“primary”.equalsIgnoreCase(type)) {

return Environment.getExternalStorageDirectory() + “/” + split;

}

} else if (isDownloadsDocument(uri)) {

final String id = DocumentsContract.getDocumentId(uri);

final Uri contentUri = ContentUris.withAppendedId(Uri.parse(“

Long.valueOf(id));

return getDataColumn(this, contentUri, null, null);

} else if (isMediaDocument(uri)) {

final String docId = DocumentsContract.getDocumentId(uri);

final String split = docId.split(“:”);

final String type = split;

Uri contentUri = null;

if (“image”.equals(type)) {

contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

} else if (“video”.equals(type)) {

contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;

} else if (“audio”.equals(type)) {

contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;

}

final String selection = “_id=?”;

final String selectionArgs = new String{split};

return getDataColumn(this, contentUri, selection, selectionArgs);

} else if (isMedia(uri)) {

String proj = {MediaStore.Images.Media.DATA};

Cursor actualimagecursor = this.managedQuery(uri, proj, null, null, null);

int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

actualimagecursor.moveToFirst();

return actualimagecursor.getString(actual_image_column_index);

}

} else if (“content”.equalsIgnoreCase(uri.getScheme())) {

// Return the remote address

if (isGooglePhotosUri(uri))

return uri.getLastPathSegment();

return getDataColumn(this, uri, null, null);

}

// File

else if (“file”.equalsIgnoreCase(uri.getScheme())) {

return uri.getPath();

}

return null;

}

/**

* uri路径查询字段

*

* @param context

* @param uri

* @param selection

* @param selectionArgs

* @return

*/

public static String getDataColumn(Context context, Uri uri, String selection, String selectionArgs) {

Cursor cursor = null;

final String column = “_data”;

final String projection = {column};

try {

cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null);

if (cursor != null && cursor.moveToFirst()) {

final int index = cursor.getColumnIndexOrThrow(column);

return cursor.getString(index);

}

} finally {

if (cursor != null)

cursor.close();

}

return null;

}

private boolean isExternalStorageDocument(Uri uri) {

return “com.android.externalstorage.documents”.equals(uri.getAuthority());

}

public static boolean isDownloadsDocument(Uri uri) {

return “com.android.providers.downloads.documents”.equals(uri.getAuthority());

}

public static boolean isMediaDocument(Uri uri) {

return “com.android.providers.media.documents”.equals(uri.getAuthority());

}

public static boolean isMedia(Uri uri) {

return “media”.equals(uri.getAuthority());

}

/**

* @param uri The Uri to check.

* @return Whether the Uri authority is Google Photos.

*/

public static boolean isGooglePhotosUri(Uri uri) {

return “com.google.android.apps.photos.content”.equals(uri.getAuthority());

}

/**

* 判断本地是否有该图片,没有则去联网请求

* */

@Override

protected void onResume() {

super.onResume();

if(readImage()){

return;

}

}

}

//BitmapUtils工具类public class BitmapUtils { /**

* 该方法用于将图片进行圆形处理

* */ public static Bitmap circleBitmap(Bitmap source){ //默认只对宽进行处理 int width=source.getWidth(); Bitmap bitmap=Bitmap.createBitmap(width,width,Bitmap.Config.ARGB_8888); Canvas canvas=new Canvas(bitmap); Paint paint=new Paint(); //设置抗锯齿 paint.setAntiAlias(true); canvas.drawCircle(width/2,width/2,width/2,paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(source,0,0,paint); return bitmap; } /** * 该方法用于图片压缩处理,注意width、height参数的类型必须是float * */ public static Bitmap zoom(Bitmap source,float width,float height){ Matrix matrix=new Matrix(); //图片进行压缩处理 matrix.postScale(width/source.getWidth(),height/source.getHeight()); Bitmap bitmap = Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, false); return bitmap; }}

以上所述是小编给大家介绍的Android实现调用系统图库与相机设置头像并保存在本地及服务器 ,希望对大家有所帮助

关于剪切头像生成图片保存服务器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 快速剪切头像 生成定制图片 自动保存至服务器 (剪切头像生成图片保存服务器)