需求分析:想从相册中获取某张图片,并对图片进行裁剪,然后保存,并发给好友,或上传到微博;

实现思路:

选择图片,通过系统相册启动Activity去显示图片缩略图,并选择图片;

裁剪图片,通过系统相册处理裁剪的Activity去执行;

实现步骤:

1.选择图片  和如何对图片进行缩放是一样的;

2.裁剪图片 通过调用系统的Activity去裁剪;

关键:

拿到系统应用的源码,查看清单文件,去配置Intent,通过查看对应Activity的源码,看看是如何传递图片给activity,又是如何返回图片;

code:

import java.io.File;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.net.Uri;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.View;
import android.widget.ImageView;

public class LoadImage2Activity extends Activity {
    private ImageView iv;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        iv =(ImageView) findViewById(R.id.iv);
    }

//加载
    public void loadImage(View view){
        long starttime = System.currentTimeMillis();
        //Bitmap bitmap  =BitmapFactory.decodeFile("/sdcard/img.JPG");
        BitmapFactory.Options opts = new Options(); //定义图片的解析的参数对象
        opts.inSampleSize = 8; //按照原图的1/8进行图片的解析

//对图片文件进行解码生成位图;也可以通过调用系统的图片浏览应用去获取图片;
        Bitmap bitmap  = BitmapFactory.decodeFile("/sdcard/img.JPG", opts);
        
        long endtime = System.currentTimeMillis();
        long time = endtime - starttime;
        System.out.println("解析图片花费了:"+time);
        iv.setImageBitmap(bitmap);
    }

//裁剪
    public void cropImage(View view){
        Intent intent = new Intent();
        
        Bundle myExtras = new Bundle();
        myExtras.putBoolean("return-data", true);
        intent.putExtras(myExtras);

//对意图的目的地进行指明;
        intent.setAction("com.android.camera.action.CROP");
        intent.addCategory("android.intent.category.DEFAULT");
//        intent.setData(Uri.fromFile(new File("sdcard/img.JPG")));
//        intent.setType("image/*");

//对意图的携带数据进行uri 和 type进行指定;
        intent.setDataAndType(Uri.fromFile(new File("sdcard/img.JPG")),"image/*");
        startActivityForResult(intent, 0);
    }

//返回当前界面时,把“data”对应的Object,强转成Bitemap,并设置到界面上去显示;
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if(data!=null){
            Parcelable imagedata  =  (Parcelable) data.getExtras().get("data");
            iv.setImageBitmap((Bitmap) imagedata);
            
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
}

图片裁剪_如何裁剪某张图片的某一部分相关推荐

  1. python open cv 图片对比_用几十万张图片来拼图!Open CV牛逼不是没有道理的!马赛克拼图...

    这是最终得到的效果,如果你的图片集不同,或者参数设置不同,效果也会有差别. 进群:548377875即可获取数十套pdf哦!源码就不分享给大家了! 1,收集图片素材 要做出上述的效果来,首先就需要大量 ...

  2. 头像裁剪_课堂裁剪|19级油画班油画头像写生作品

    班级:贵州师范大学2019级绘画班 课程:<油画头像写生> 指导老师:刘力 课程介绍 <油画头像写生>课:本课程主要研究色,油画色彩及油画色彩规律,通过学习本课使同学们能够掌握 ...

  3. ImageMagick将多张图片拼接成一张图片_批量裁剪图片、拼接长图、添加水印不想打开ps,你可以试试这款软件...

    工作中的需求常会遇到,批量处理一些图片,比如添加水印.压缩图片大小.批量裁剪等需求,ps可能没办法完成批量的操作,下面这款软件由一位摄影师开发,功能包括了图片加水印.长图拼接.富文本制图.尺寸调整.图 ...

  4. layui鼠标放上图片局部放大_老照片修复教程之—裁剪图片大小

    对于会PS的网友来说,这些内容太小白了,但对于不会的网友来说,完全摸不着头脑,所以,41图片老照片修复以最简单的工具使用说起,争取让PS小白也能快速入门. 本节的内容就讲裁剪图片大小: 扫描或者翻拍好 ...

  5. Android学习笔记19-ImageView实现图片适屏与裁剪

    在Android中,要将一张图片显示在屏幕上,需要创建一个显示图片的对象,该对象就是ImageView. 1.ImageView常用属性 要对图片进行适屏裁剪操作,首先需要了解ImageView的常用 ...

  6. 图片的增强之-裁剪、旋转、放缩

    一.图片增强 当我们训练深度学习模型的时候,你的图片数据集可能数量太少或者是有的类别数量过少,你就可以通过对图片进行裁剪.旋转和放缩来完成图片数量的扩充.PS:参考的那篇文章找不到链接了,实在不好意思 ...

  7. 3、python 视频转图片及图片转视频、裁剪、创建图片压缩成视频

    背景:从视频中获取图片,进行数据标注,然后进行训练; 指定文件夹读取视频然后产生相应图片工具 # -*- coding: utf-8 -*- import os import cv2 import o ...

  8. PhotoShop使用1 - 图片的新建,裁剪,图像大小的修改,移动工具

    新建 无特殊情况的话,一般分辨率写300ppi,这样会更清楚,不过同时图像体积占用会变大,对清晰度要求不高的话72ppi也是可以的,背景颜色一般选白色 从剪贴板粘贴图片到PhotoShop(复制某张图 ...

  9. Android学习笔记19:ImageView实现图片适屏与裁剪

    在Android中,要将一张图片显示在屏幕上,需要创建一个显示图片的对象,该对象就是ImageView. 1.ImageView常用属性 要对图片进行适屏裁剪操作,首先需要了解ImageView的常用 ...

最新文章

  1. layer.js弹窗组件layer.prompt无法调用解决
  2. 使用git管理源码之文件状态和工作区理解
  3. Matlab 重命名
  4. 如何在Marketing Cloud launchpad里添加Contact创建tile
  5. swift5以上版本的代理的实现,详细教你书写代理
  6. guid主键 oracle_使用GUID作为数据库主键的测试
  7. android 开发传输安全,移动应用安全开发指南(Android)--数据传输
  8. 波士顿动力十年对比刷屏,网友:以后该不会变成终结者吧?
  9. logback为日志配置颜色
  10. 网页图片显示分辨率与实际分辨率不一样
  11. C++银行账户管理程序2
  12. oracle12c 日志分析,【案例】Oracle 12C日志大量Resize operation completed for file信息
  13. python驱动photoshop_用Python用Photoshop打开PDF
  14. 区块链技术入门,涉及哪些编程语言?
  15. redis系列之数据库与缓存数据一致性解决方案(简单易懂)
  16. 5.31 综合案例2.0 - 在线音乐盒
  17. 后台系统的权限控制与管理
  18. python多线程破解压缩包_我用 Python 破解了同事的加密压缩包!
  19. 数组下标越界异常是如何产生的
  20. 图片格式怎么转换?推荐三种实用的转换方法

热门文章

  1. 对Vuejs框架“渐进式”的理解
  2. Direct3D中的光照
  3. 如何改域的NETBIOS名?
  4. RAM、ROM、FLASH的存储原理及区别
  5. 编译MapGuide
  6. 使用 Python 读取 json 格式文件并查重
  7. 每日文献:2018-01-29
  8. uni-app实现扫描二维码功能
  9. 福昕阅读器【上下分屏】阅读同一个PDF,上下文对照参考阅读,非常方便
  10. 不能不懂的 Java 源代码编译过程分析