Android开发:实现图片缩放之PhotoView的使用

Android---PhotoViewer实现图片预览 PhotoViewer 图片查看器模仿微信朋友圈查看图片的效果。 阅读详情

项目中需要显示图片,并对图片进行缩放,于是选择了PhotoView

这里只是对本地SD卡中存储的图片进行了加载,未做网络图片加载

项目地址:https://github.com/chrisbanes/PhotoView

 

一、添加依赖

Gradle

  • Project level build.gradle(在project的build.gradle中添加依赖)
allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}
  • App level build.gradle(在app的build.gradle中添加依赖)
dependencies {
   compile 'com.github.chrisbanes:PhotoView:1.2.6'
}

二、代码实现

BaseActivity是我自己定义的基类,可以换成自己的或者继承系统的都可以。

init方法是在BaseActivity中实现的抽象方法,基本等同于onCreate()方法。

/**
 * Created by Administrator on 2018/9/3.
 * 展示图片
 */

public class ShowImgActivity extends BaseActivity {
    @Override
    protected void init() {
        setContentView(R.layout.activity_show_img);
        String picPath = getIntent().getStringExtra("picPath");
        initElement(picPath);
    }

    /**
     * 初始化控件
     *
     * @param picPath 图片地址
     */
    private void initElement(String picPath) {
        PhotoView photoView = (PhotoView) findViewById(R.id.photo);

        setElement(photoView, picPath);
    }

    /**
     * 配置控件
     *
     * @param picPath 图片地址
     */
    private void setElement(PhotoView photoView, String picPath) {
        if (!TextUtils.isEmpty(picPath)) {
            Display display = getWindowManager().getDefaultDisplay();
            Point point = new Point();
            display.getSize(point);

            Bitmap bitmap = decodeBitmapFromSD(picPath, point.x, point.y);
            photoView.setImageBitmap(bitmap);
        } else {
            Toast.makeText(this, "未找到文件", Toast.LENGTH_SHORT).show();
        }
    }

    /**
     * 启动Activity
     *
     * @param context 上下文
     * @param picPath 图片地址
     */
    public static void startActivity(Context context, String picPath) {
        Intent intent = new Intent();
        intent.setClass(context, ShowImgActivity.class);
        intent.putExtra("picPath", picPath);
        context.startActivity(intent);
    }
}

三、布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <uk.co.senab.photoview.PhotoView
        android:id="@+id/photo"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

四、decodeBitmapFromSD方法

  // 从sd卡上加载图片
    @Nullable
    public static Bitmap decodeBitmapFromSD(String filePath,
                                            int reqWidth, int reqHeight) {
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(filePath, options);
        options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
        options.inJustDecodeBounds = false;
        if (getFileExtName(filePath).equals("jpg")) {
            FileInputStream fis = null;
            try {
                fis = new FileInputStream(filePath);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

            return BitmapFactory.decodeStream(fis, null, options);
//            if (src != null) {
//                return createScaleBitmap(src, reqWidth, reqHeight);
//            }
        }
        return null;
    }

五、calculateInSampleSize 计算缩放比例

private static int calculateInSampleSize(BitmapFactory.Options options,
                                         int reqWidth, int reqHeight) {
    final int height = options.outHeight;
    final int width = options.outWidth;
    int inSampleSize = 1;
    if (height > reqHeight || width > reqWidth) {
        final int halfHeight = height / 2;
        final int halfWidth = width / 2;
        while ((halfHeight / inSampleSize) > reqHeight
                && (halfWidth / inSampleSize) > reqWidth) {
            inSampleSize *= 2;
        }
    }
    return inSampleSize;
}

注:访问外部存储,记得添加访问权限!

 

 

android自定义PhotoView 自定义一个图片展示PhotoView,实现了双击放大缩小、双指缩放、拖动和惯性滑动功能。 阅读详情

相关推荐

使用Android ViewPager与PhotoView实现图片滑动查看

安卓新手,最近在写一个小的个人项目,其中需要全屏查看一组网络图片。其实就是简单的图片查看功能。在网上搜了实现方法,最终在Github上找到了一个叫做Touch Gallery的项目,它不仅能够载入本地图片,还能载入网络图片,完全符合我的需求。可惜这个项目年代久远,作者也已经不再维护,加之我在将这个Eclipse平台编译的项目导入到Android Studio中时遇到了一些麻烦。遂决定另寻它法。 这里主要还是用到了Android自带的ViewPager控件,用于实现水平切换,并且它自带了滑动效果。将每一张需

ListeneR的博客 1万+

Android---PhotoView

自定义 PhotoView 继承(extends)自 View。并在最中间显示后面操作的图片。绘制图片可以重写 onDraw()方法,并在里面通过Canvas.drawBitmap()来要绘制图片。drawBitmap()的四个参数:bitmap: 要在 Canvas 中绘制的位图letf: 正在绘制的位图左侧的位置top: 正在绘制的位图顶部的位置paint: 画笔其中 (left, top) 是要绘制图片的起始坐标。要将图片绘制在中间,我们就需要计算 left/top 的位置。

qq_44950283的博客 2711

Android 图片查看器实现 PhotoView + ViewPager

今天看了今日头条APP的图片查看的效果,就自己实现了一下。效果如下首先引入两个库一个是图片缩放的功能:PhotoView框架compile 'com.github.chrisbanes:PhotoView:1.2.6'一个界面滑动退出效果(比如自己滑动空白区域,就退出界面,而不用按手机返回键。我这里实现上下滑动退出界面)Slider框架compile 'com.komi.slider:slider...

qq_37238649的博客 7385

Android PhotoView简单应用

PhotoView是一个图片浏览器,支持多点触摸来进行图片的滚动和缩放。

假装你是大灰狼的专栏 3651

Android中的图片按比例缩放

通过使用上述不同的scaleType属性值,我们可以根据具体的需求来调整图片的缩放方式,从而满足界面设计的要求。在Android开发中,我们常常需要在界面中显示图片,并且希望图片能够按照一定比例进行缩放。这个属性可以应用于ImageView控件,用来指定图片在控件中的缩放方式。通过使用android:scaleType属性,我们可以灵活地控制图片的缩放行为。下面我将介绍几种常用的scaleType属性值,并给出相应的源代码示例,以便更好地理解和应用这些属性。Android中的图片按比例缩放。

CyberGenius的博客 863

基于Boost::beast模块的异步WebSocket客户端实现

以上代码实现了一个简单的WebSocket客户端,它连接到"echo.websocket.org"服务器,发送一条消息并等待接收服务器返回的消息。在实现过程中,我们首先创建一个io_context对象,并使用resolver对象解析出服务器地址和端口号,然后创建WebSocket对象并异步连接到服务器。WebSocket是一种全双工的网络协议,可以用于在浏览器和服务器间进行实时通讯,其工作方式与HTTP类似,但是它们之间存在一个长连接,可以实现双向数据传输。

2301_79326559的博客 575

PhotoView终极指南:Android图片缩放应用开发的10个最佳实践

PhotoView是Android开发中一款强大的图片缩放库,它允许用户通过手势对图片进行缩放、旋转和平移操作,为应用提供流畅的图片浏览体验。本文将分享使用PhotoView开发图片缩放应用的10个最佳实践,帮助开发者快速集成并优化图片交互功能。 [![Android图片缩放应用开发](https://raw.gitcode.com/gh_mirrors/pho/PhotoView/raw/56

gitblog_00687的博客 637

Android 图片处理缩放功能

PS:在开发中我们会遇到一些图片处理问题,比如说缓存图片了、限制图片大小了、查看图片了等。上一篇文章介绍了图片的全景效果查看,今天介绍一个图片缩放,我们如果有时间的话,可以自己写一个属于自己的库,里面会用到view的按压、事件分发、手势等一些知识,如果没有时间或者不会其他的方法,不妨来看看这个PhotoView。这是一个图片缩放库,对于这样的还有GitView等,下面我就介绍一些用法。 功能: 正常加载图片 双击放大 手势随意缩放 随意拖动查看图片每一个角落 结合其他设置可实现翻转 效果图 1:本地图片加载 <ImageView android:layout_

PhotoView的使用

前言 PhotoView是一个常用的图片预览控件,主要用于Android中大图查看,例如结合ViePager完成朋友圈九宫格图片预览功能,前几天我写的ViewPager分页加载数据这篇博客,可以结合起来使用,PhotoView主要的功能有,图片手势缩放,旋转,相比ImageView,用户体验更好。 今天我主要介绍两个PhotoView的框架,第一个是(https://github.com/ch...

qq_32534441的博客 5987

从材料到磁场:ANSYS Workbench永磁体仿真全流程解析

本文详细解析了在ANSYS Workbench中进行永磁体仿真的完整流程。从钕铁硼等永磁材料的特性讲起,逐步指导如何在软件中搭建模型、定义关键磁化方向、设置边界条件与网格划分,并解读磁场分布结果。文章旨在帮助工程师掌握静磁场仿真核心技术,为电机、传感器等设备的设计与优化提供精准指导。

weixin_29229989的博客 272

ADS使用Smith圆图进行阻抗匹配

在处理RF系统的实际应用问题时,总会遇到一些非常困难的工作,对各部分级联电路的不同阻抗进行匹配就是其中之一。一般情况下,需要进行匹配的电路包括天线与低噪声放大器(LNA)之间的匹配、功率放大器输出(RFOUT)与天线之间的匹配、LNA/VCO输出与混频器输入之间的匹配。匹配的目的是为了保证信号或能量有效地从“信号源”传送到“负载”。 阻抗匹配(impedance matching) 信号源内阻与所接传输线的特性阻抗大小相等且相位相同,或传输线的特性阻抗与所接负载阻抗的大小相等且相位相同,分别称为传输线的输

红茶绿茶和奶茶的博客 3万+

开源项目photoview获取图片大小以及偏移量并还原

因为需要一个支持手势缩放和平移的控件,所以上github找到了这个直接拿来用了photoview 我是需要定时网络请求图片然后再放到photoview,需要记录下图片的偏移量以及大小不然每次请求之后图片都会还原成原大小,搜索了一下没找到后来看了看源码找到了办法 在photoviewAttacher里面可以看到有这么一段,显然就知道了我们只需要获取到suppmatrix,然后再还原即可 ...

qq91752728的博客 1499

攀藤PMS系列传感器STM32驱动开发与数据解析实战

本文详细介绍了攀藤PMS系列传感器与STM32微控制器的驱动开发与数据解析实战,涵盖硬件连接、数据协议解析、驱动源码编写及数据处理优化。重点解析了传感器数据帧结构,提供了完整的STM32驱动实现代码,并分享了实际应用中的问题排查与性能优化经验,帮助开发者快速实现高精度颗粒物浓度检测。

milk8的博客 347

XamarinComponents 跨平台开发:5个最佳实践案例

XamarinComponents 是一套强大的跨平台开发插件集合,专为 Xamarin 开发者打造,提供了丰富的 UI 组件、工具库和功能模块,帮助开发者快速构建高质量的 Android 和 iOS 应用。本文将介绍 5 个基于 XamarinComponents 的最佳实践案例,展示如何利用这些组件提升开发效率和应用质量。 ## 1. AR 增强现实应用开发:ARCore 组件的创新实践

gitblog_00804的博客 341

【深度学习】肺结节分割项目实战一:处理数据集

一、LIDC-IDRI数据集简介 官方网站 肺图像数据库协会的图像收集(LIDC-IDRI)包括诊断和带有病变注释标记的肺癌筛查胸部CT。这是一个网络公开的国际资源,用于肺癌检测和诊断的计算机辅助诊断(CAD)方法的开发、培训和评估。 数据集包含1018个病例,每个病例包括来自临床胸部CT扫描的图像和一个相关的XML文件,该文件记录了由四名经验丰富的胸部放射科医生进行的两阶段图像注释过程的结果。在最初的盲读阶段,每个放射科医生独立审查每个CT扫描,并标记出属于三种类型之一的病变(“结节>= 3mm”,

weixin_42182906的博客 1万+

基于 parallels ubuntu 20.04 LTS (focal) 的ros+px4+gazebo 安装

基于 parallels ubuntu 20.04 LTS (focal) 的ros+px4+gazebo 安装。

weixin_40132006的博客 2240

告别Android图片浏览卡顿:PhotoView图片缩放库的终极解决方案

你是否曾经遇到过Android应用中图片浏览体验不佳的问题?双指缩放不流畅、图片滑动卡顿、或者与ViewPager等容器冲突导致应用崩溃?这些问题正是PhotoView图片缩放库要解决的痛点。PhotoView是一个专为Android设计的强大图片浏览组件,它让你的应用能够实现专业级的图片缩放和交互体验。 ## 🔍 问题:为什么Android原生图片浏览体验这么差? 在开发Android应用

gitblog_00819的博客 951

S7-1200PLC期末复习题(第七章)

A.0 B.1 C.4 D.-4 A、CV = 0 B、CV = 1 C、CV < 4 D、CV >= 4A、0,0 B、3,0 C、1,1 D、3,1 A、0 B、1 C、先是1,再变为0 D、先是0,再变为1置位输出:常开触点M0.0闭合,Q0.0变为1状态并保存该状态,即使M0.0断开,Q0.0也保持1状态。 复位输出:常开触点M0.1闭合时,Q0.0变为0状态并保持该状态,即使M0.1断开,Q0.0也保持为0状态。 A、1 B、0 C、5 D、10RESET_BF指令需要两个参数,第一个是复位的位数

qq_52251819的博客 4414

PhotoView:终极Android图片缩放库完整使用指南

PhotoView是Android开发中功能最强大、使用最便捷的图片缩放库之一,它让开发者能够轻松实现支持多点触控、双击缩放和流畅滚动的ImageView功能。无论你是初学者还是有经验的开发者,这个完整的指南都将帮助你快速掌握PhotoView的核心功能和使用技巧。 ## 📱 为什么选择PhotoView? 在Android应用开发中,图片查看功能是许多应用的核心需求。传统的ImageVie

gitblog_00817的博客 796

通俗范畴论10 泛性质(MD版)

既然泛性质可以在同构意义下唯一确定一个泛构造,那么我们就可以用泛性质来定义泛构造。我们回顾一下已经掌握的泛性质和泛构造。泛性质其实我们并不陌生,始对象和终对象,就是具有泛性质的对象,一个具有“始”的泛性质,一个具有“终”的泛性质。比如始对象,如果一个范畴里面有始对象,它到所有对象都有且只有一个态射,这样的对象可能有两个么?嗯,还真可能,但是这两个始对象同构,所以在同构意义下,它们可以看成一个,因此在同构意义下,始对象是唯一的。同理,终对象也一样。同构的始对象。

RockTec的专栏 478

rk3568 点亮双LVDS 屏

承接文章《rk3568点亮LCD(lvds)》中仅仅只能使用亮单LVDS;经过厂商的努力,陆续发布新补丁。目前支持双lvds显示,缺憾是需要自己额外移植相关补丁。受限于通信频率和VOP编码能力,支持最大分辨仍然是1920x1080、60fps。

weixin_35723192的博客 3007

android photoview 图片放大缩放功能 ImageView

将lib 添加进来。

2401_87555310的博客 3091

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

一款好用的android图片缩放查看开源框架photoview的使用。

介绍:框架核心类PhotoView继承ImageView,它根据用户手势的不同,给图片做出相应的缩放,平移等动作。 使用步骤: 1.在project的build.gradle中添加如下: allprojects { repositories { jcenter() maven { url "https://jitpack.io" } } } 2.在...

陈志宝‑天津|Android&Java 全栈开发工程师 1576

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

PhotoView终极指南:如何实现Android图片智能缩放与交互功能

PhotoView是一款强大的Android图片处理库,专为实现流畅的图片缩放、平移和旋转功能而设计。无论是简单的图片查看器还是复杂的相册应用,PhotoView都能提供专业级的用户体验,让开发者轻松集成高品质的图片交互功能。 ## 🚀 为什么选择PhotoView?核心优势解析 在Android开发中,实现图片缩放功能往往需要处理复杂的手势检测和矩阵变换。PhotoView通过封装这些复杂

gitblog_00187的博客 696

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Android使用PhotoView实现图片缩放功能

使用第三方开源项目,地址:https://github.com/chrisbanes/PhotoView   引入library 项目. 简单的加载一张图片: public class MainActivity extends Activity { ImageView imgView; PhotoViewAttacher attacher; @Override pro

程序,有自己的灵魂. 4495
上一篇: Android开发:MPAndroidChart使用
下一篇: Android开发:Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)的用法
android157
博客等级 码龄9年 193粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值