精华内容
下载资源
问答
  • 图片进行等比例拉伸

    千次阅读 2019-03-09 14:01:21
    * 对图片根据手机宽高进行等比例拉伸 * @param activity * @param view * @param drawableResId */ public static void scaleImage(final Activity activity, final View view, int drawableResId) { // 获取...
    /**
     * 对图片根据手机宽高进行等比例拉伸
     * @param activity
     * @param view
     * @param drawableResId
     */
    public static void scaleImage(final Activity activity, final View view, int drawableResId) {
    
        // 获取屏幕的高宽
        Point outSize = new Point();
        activity.getWindow().getWindowManager().getDefaultDisplay().getSize(outSize);
    
        // 解析将要被处理的图片
        Bitmap resourceBitmap = BitmapFactory.decodeResource(activity.getResources(), drawableResId);
    
        if (resourceBitmap == null) {
            return;
        }
    
        // 开始对图片进行拉伸或者缩放
    
        // 使用图片的缩放比例计算将要放大的图片的高度
        int bitmapScaledHeight = Math.round(resourceBitmap.getHeight() * outSize.x * 1.0f / resourceBitmap.getWidth());
    
        // 以屏幕的宽度为基准,如果图片的宽度比屏幕宽,则等比缩小,如果窄,则放大
        final Bitmap scaledBitmap = Bitmap.createScaledBitmap(resourceBitmap, outSize.x, bitmapScaledHeight, false);
    
        view.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                //这里防止图像的重复创建,避免申请不必要的内存空间
                if (scaledBitmap.isRecycled())
                    //必须返回true
                    return true;
    
    
                // 当UI绘制完毕,我们对图片进行处理
                int viewHeight = view.getMeasuredHeight();
    
    
                // 计算将要裁剪的图片的顶部以及底部的偏移量
                int offset = (scaledBitmap.getHeight() - viewHeight) / 2;
    
    
                // 对图片以中心进行裁剪,裁剪出的图片就是非常适合做引导页的图片了
                Bitmap finallyBitmap = Bitmap.createBitmap(scaledBitmap, 0, offset, scaledBitmap.getWidth(),
                        scaledBitmap.getHeight() - offset * 2);
    
    
                if (!finallyBitmap.equals(scaledBitmap)) {//如果返回的不是原图,则对原图进行回收
                    scaledBitmap.recycle();
                    System.gc();
                }
    
    
                // 设置图片显示
                view.setBackgroundDrawable(new BitmapDrawable(activity.getResources(), finallyBitmap));
                return true;
            }
        });
    }
    展开全文
  • 安卓图片适配(拉伸

    千次阅读 2019-01-14 12:22:07
    假设有一个400*400的图片,在手机上要全屏显示,手机屏幕是1024*1920的,无法等比例拉伸,可以用下面方法: public static void scaleImage(final Activity activity, final View view, int drawableResId) { //...

    假设有一个400*400的图片,在手机上要全屏显示,手机屏幕是1024*1920的,无法等比例拉伸,可以用下面方法:

    public static void scaleImage(final Activity activity, final View view, int drawableResId) {
    
        // 获取屏幕的高宽
        Point outSize = new Point();
        activity.getWindow().getWindowManager().getDefaultDisplay().getSize(outSize);
    
        // 解析将要被处理的图片
        Bitmap resourceBitmap = BitmapFactory.decodeResource(activity.getResources(), drawableResId);
    
        if (resourceBitmap == null) {
            return;
        }
    
        // 开始对图片进行拉伸或者缩放
    
        // 使用图片的缩放比例计算将要放大的图片的高度
        int bitmapScaledHeight = Math.round(resourceBitmap.getHeight() * outSize.x * 1.0f / resourceBitmap.getWidth());
    
        // 以屏幕的宽度为基准,如果图片的宽度比屏幕宽,则等比缩小,如果窄,则放大
        final Bitmap scaledBitmap = Bitmap.createScaledBitmap(resourceBitmap, outSize.x, bitmapScaledHeight, false);
    
        view.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                //这里防止图像的重复创建,避免申请不必要的内存空间
                if (scaledBitmap.isRecycled())
                    //必须返回true
                    return true;
    
    
                // 当UI绘制完毕,我们对图片进行处理
                int viewHeight = view.getMeasuredHeight();
    
    
                // 计算将要裁剪的图片的顶部以及底部的偏移量
                int offset = (scaledBitmap.getHeight() - viewHeight) / 2;
    
    
                // 对图片以中心进行裁剪,裁剪出的图片就是非常适合做引导页的图片了
                Bitmap finallyBitmap = Bitmap.createBitmap(scaledBitmap, 0, offset, scaledBitmap.getWidth(),
                        scaledBitmap.getHeight() - offset * 2);
    
    
                if (!finallyBitmap.equals(scaledBitmap)) {//如果返回的不是原图,则对原图进行回收
                    scaledBitmap.recycle();
                    System.gc();
                }
    
    
                // 设置图片显示
                view.setBackgroundDrawable(new BitmapDrawable(activity.getResources(), finallyBitmap));
                return true;
            }
        });
    }
    展开全文
  • 不过这样的自适应方式是直接拉伸铺满整个屏幕的方式,并没有保障等比例拉伸,就是说背景图就会出现变形,以下面这张图为例(注意黄色的圆): 自带的自适应效果是这样的: 而等比例拉伸自适应的效果是这样的: 实现...

    效果如下:
    在这里插入图片描述

    首先感叹一下,UGUI的自适应做的还是非常不错的,RectTransform中提供了非常多种的自适应方式.对做界面来说还是很友好的.
    在这里插入图片描述
    如果界面上需要有个全屏的背景图(UI界面一般都是有的吧,弹框啥的除外),那么需要简单的这样设置就可以满足屏幕的自适应了(so easy):
    在这里插入图片描述
    不过这样的自适应方式是直接拉伸铺满整个屏幕的方式,并没有保障等比例拉伸,就是说背景图就会出现变形,以下面这张图为例(注意黄色的圆):
    在这里插入图片描述
    自带的自适应效果是这样的:
    在这里插入图片描述
    而等比例拉伸自适应的效果是这样的:
    在这里插入图片描述

    实现

    第一步

    既然是自己写代码来做自适应那么就得去掉UGUI给我们提供的自适应方式,修改为居中的方式
    在这里插入图片描述

    第二步: 获取当前需要展示的屏幕尺寸.

    屏幕尺寸的获取直接通过Screen.width和Screen.height即可,但是如果Canvas中用了CanvasScaler中的ScreenMatchMode,那么画布的尺寸则不一定和屏幕分辨率一样(会出现我的RawImage的width和Height值设为屏幕分辨率,但还是没有刚好和屏幕吻合的情况)
    在这里插入图片描述
    不过可以简单的直接获取Canvas的尺寸:

    //当前画布尺寸
    Vector2 canvasSize = gameObject.GetComponentInParent<Canvas>().GetComponent<RectTransform>().sizeDelta;
    

    第三步:拿到图片的原图大小

    既然是等比例拉伸,总得知道图片本身的尺寸吧,有可能图片在导入时选择了ToNearest,则会对尺寸做修改,方便压缩.所以暂时就手动输入图片的原尺寸吧.
    在这里插入图片描述

    第四步: 准备充分,开始做自适应算法

    既然是等比例拉伸,则X和Y只能保证一个刚好和屏幕匹配,而另一个则需要委屈一下,要么是超出屏幕,要么就是留空白而不能填满屏幕. 想想一下视频播放器的自适应,为了能显示视频所有内容所以一般是选择留白的方式,然后镂空部分用黑色补上,比如这样:
    在这里插入图片描述
    而前面演示的动图则是采用超出屏幕的方式,通过Scene面板动图看更直观,白色框是屏幕范围:
    在这里插入图片描述
    完整代码(挂在背景图上就能工作):

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    
    /// <summary>
    /// Created by Vitens on 2020/12/11 20:48:35
    /// 
    /// Description : 
    ///      全屏背景图片等比例拉伸自适应
    /// </summary>
    [ExecuteInEditMode]
    public class BGScaler : MonoBehaviour
    {
        //图片原大小(压缩前的)
        public Vector2 textureOriginSize = new Vector2(2048, 1024);
        // Start is called before the first frame update
        void Start()
        {
            Scaler();
        }
    
        //适配
        void Scaler()
        {
            //当前画布尺寸
            Vector2 canvasSize = gameObject.GetComponentInParent<Canvas>().GetComponent<RectTransform>().sizeDelta;
            //当前画布尺寸长宽比
            float screenxyRate = canvasSize.x / canvasSize.y;
    
            //图片尺寸 这个得到的结果是 (0,0) ?
            //Vector2 bgSize = bg.mainTexture.texelSize;
            Vector2 bgSize = textureOriginSize;
            //视频尺寸长宽比
            float texturexyRate = bgSize.x / bgSize.y;
    
            RectTransform rt = (RectTransform)transform;
            //视频x偏长,需要适配y(下面的判断 '>' 改为 '<' 就是视频播放器的视频方式)
            if (texturexyRate > screenxyRate)
            {
                int newSizeY = Mathf.CeilToInt(canvasSize.y);
                int newSizeX = Mathf.CeilToInt((float)newSizeY / bgSize.y * bgSize.x);
                rt.sizeDelta = new Vector2(newSizeX, newSizeY);
            }
            else
            {
                int newVideoSizeX = Mathf.CeilToInt(canvasSize.x);
                int newVideoSizeY = Mathf.CeilToInt((float)newVideoSizeX / bgSize.x * bgSize.y);
                rt.sizeDelta = new Vector2(newVideoSizeX, newVideoSizeY);
            }
        }
    
        public void Update()
        {
    #if UNITY_EDITOR
            //editor模式下测试用
            Scaler();
    #endif
        }
    
    }
    
    
    展开全文
  • 用js插入一张图片并控制图片宽高,再利用CSS按比例缩放背景图片,下面是过程的具体实现,喜欢的朋友可以学习下
  • 主要介绍了.Net实现上传图片比例自动缩小或放大的方法,实例内容简洁功能实用,需要的朋友可以参考下
  • H5 PhotoSwipe简单例子 H5 PhotoSwipe简单例子 H5 PhotoSwipe简单例子 H5 PhotoSwipe简单例子 自己改装成vue的例子 图片能发大缩放
  • * 根据图片比例设置控件的宽高,避免图片拉伸 * @param context * @param view 需要设置的控件 * @param w 图片的宽 * @param h 图片的高 */ public static void setHeight(Context context, View view,int w...
        /**
         * 根据图片比例设置控件的宽高,避免图片拉伸
         * @param context
         * @param view 需要设置的控件
         * @param w  图片的宽
         * @param h  图片的高
         */
        public static void setHeight(Context context, View view,int w,int h){
            int widthPixels = context.getResources().getDisplayMetrics().widthPixels;
            ViewGroup.LayoutParams params = view.getLayoutParams();
            params.width=widthPixels;
            params.height=widthPixels*h/w;
        }
    展开全文
  • js 代码部分 <div className={styles.img_box} > <div className={styles.img} style={{backgroundImage: `url(${this.state.url})`}} /> </div> less 代码部分 ... height: 1
  • 一个HTML5图片墙 包括了图片拖动|旋转|图片放大|拉伸等多种...另外效果中的图片拉伸放大是等比例放大或缩小,会保持图片的纵横比不失真。本HTML5图片特效包括了众多图片操作技巧,是大家学习HTML5图片控制很好的范例。
  • vb.net图片拉伸及缩放

    2015-03-30 22:42:40
    vb.net图片拉伸及缩放,vb.net加载图片,可以进行对图片比例缩放!内包含了代码程序,vb.net图片拉伸及缩放可以进行直接复制使用
  • 图片比例大小拉伸,保持最大限度不失真 procedure StretchImage(ASourceBmp, AStretchBmp: TBitmap; AWidth, AHeight: Integer); begin ASourceBmp.PixelFormat := pf32bit; //设置位图为32色位图 AStretchBmp....
  • CSS3的background-size属性,实现响应式式图片比例缩放。告别了考虑各种兼容性物理像素的烦恼。
  • //在webView加载完毕后注入js样式修改图片宽高-(void)webViewDidFinishLoad:(UIWebView *)webView{ NSString *js = @"function changeImgWH() { \ var imgs = document.getElementsByTagName('img'); \ for ...
  • 那么如何让android上面显示的图片是基于原来图片比例呢,首先你可以在res目录下创建一个drawable-nodpi的目录,这个目录下的图片是不根据dpi的多少来进行拉伸或者缩小滴。然后,就是根据屏幕的宽 和 图片的宽高 ...
  • 本文实例为大家分享了iOS图片拉伸的具体代码,供大家参考,具体内容如下 1. UIImageView整体拉伸 UIImageView-contentMode typedef NS_ENUM(NSInteger, UIViewContentMode) { UIViewContentModeScaleToFill, // ...
  • /** * * @param screen_width * 屏幕宽度 * @param screen_dpi * 屏幕的密度值 * @param bitmap * 图片 * @return */ public static int get_Image_heigth(int screen_wid
  • <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="fitCenter" android:adjustViewBounds="true"/> 转载于:https://b...
  • 一般android适配图片是使用套图来实现的,如下图: 现在只有一张从后台获取到的照片了,只能用代码来实现照片大小的拉伸,来进行列表照片的适配; 下面是代码: private List<WelfareCardBean> ...
  • 本文实例讲述了微信小程序实现image组件图片自适应宽度比例显示的方法。分享给大家供大家参考,具体如下: 一. 了解image组件 由于image有默认的固定的宽度和高度,这样我们在做图片自适应的时候,就不好做了。下面...
  • 利用windows画图工具进行图片拉伸

    万次阅读 2018-10-23 16:31:00
    项目背景:利用线阵相机采集的设备图片,由于...通过查询设备厂商的信息,得知该设备的长宽是450×260,因此只需要知道该设备在图片中的像素位置,即可计算出拉伸比例。python代码如下: from __future__ import...
  • 在做android图片加载的时候,由于手机屏幕受限,很多大图加载过来的时候,我们要求等比例缩放,接下来小编给大家带来了Android 使用Picasso加载网络图片比例缩放的实现方法,感兴趣的朋友一起看看吧
  • img不拉伸图片 对图片保留原始比例 <div style="width:200px;height:200px;"> <img src="./tupian.jpg" alt="" style="width:100%;height:100%;object-fit: cover;"/> </div>
  • 使用JavaScript解决网页图片拉伸问题

    千次阅读 2016-11-08 18:30:10
    开发网页的过程中经常会因为图片拉伸问题而苦恼,这里就将介绍如何通过JS来动态的处理网页图片尺寸的问题,让网页不再存在拉伸图片,让网站更加美观
  • 转自 ... /*  设置圆角,通过layer中的cornerRadius和masksToBounds即可。   ... 自适应图片宽高比例。通过UIViewContentModeScaleAspectFit设置,注意这个UIImageView的frame就不是init
  • 本文实例为大家分享了python实现批量按比例缩放图片的具体代码,供大家参考,具体内容如下 把脚本文件放在要缩放的文件夹下面。 双击运行脚本,输入要缩放的系数。脚本会在当前目录下创建一个scaledImg_xxxx文件夹,...
  • UI中保证图片拉伸图片比例不被破坏将图片切片 原图 效果图 image的Image Type需要设置为 并且需要设置图片的属性将图片进行切片
  • 为了保证图片统一大小,直接设置图片大小又会导致图片拉伸,造成图片模糊,接下来将介绍的代码可以在图片加载完成后自动按比例调整图片大小,感兴趣的你可以参考下
  • div css布局中CSS图片大小自动按比例比例缩小图片不变形解决技巧 在DIV CSS布局中对于图片列表或图片排版时,图片不是固定宽度高度大小,但图片占位是固定宽度高度,这个时候如果使用CSS固定死图片大小(宽度 ...
  • 1. .bg{ background:url(http://wyz.67ge.com/wp-content/uploads/qzlogo.jpg); filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale')"; -moz-background-size:100% 100%;... b
  • HTML5 canvas实现图片拉伸、压缩与裁剪

    万次阅读 多人点赞 2017-03-31 20:54:47
    我们在网页中经常会用到图片展示,通常情况下会给一个固定的宽高来显示这个图片,然而从服务器端上传的图片大小是不确定的,如果直接按默认填充这个框有时候就会特别丑orz。作为一个完(wai)美(mao)主(xie)义(hui)者...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,476
精华内容 6,990
关键字:

怎么拉伸图片比例