精华内容
下载资源
问答
  • 本文给大家分享android图片压缩的三种方法并压缩到指定大小,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
  • python不改变图片尺寸压缩到指定大小

    千次阅读 热门讨论 2020-05-27 17:36:51
    python不改变图片尺寸压缩到指定大小 import base64 import io import os from PIL import Image from PIL import ImageFile # 压缩图片文件 def compress_image(outfile, mb=190, quality=85, k=0.9): """不...

     python不改变图片尺寸压缩到指定大小

    import base64
    import io
    import os
    from PIL import Image
    from PIL import ImageFile
    
    # 压缩图片文件
    def compress_image(outfile, mb=190, quality=85, k=0.9):
        """不改变图片尺寸压缩到指定大小
        :param outfile: 压缩文件保存地址
        :param mb: 压缩目标,KB
        :param step: 每次调整的压缩比率
        :param quality: 初始压缩比率
        :return: 压缩文件地址,压缩文件大小
        """
    
        o_size = os.path.getsize(outfile) // 1024
        print(o_size, mb)
        if o_size <= mb:
            return outfile
        
        ImageFile.LOAD_TRUNCATED_IMAGES = True
        while o_size > mb:
            im = Image.open(outfile)
            x, y = im.size
            out = im.resize((int(x*k), int(y*k)), Image.ANTIALIAS)
            try:
                out.save(outfile, quality=quality)
            except Exception as e:
                print(e)
                break
            o_size = os.path.getsize(outfile) // 1024
        return outfile
    
    # 压缩base64的图片
    def compress_image_bs4(b64, mb=190, k=0.9):
        """不改变图片尺寸压缩到指定大小
        :param outfile: 压缩文件保存地址
        :param mb: 压缩目标,KB
        :param step: 每次调整的压缩比率
        :param quality: 初始压缩比率
        :return: 压缩文件地址,压缩文件大小
        """
        f = base64.b64decode(b64)
        with io.BytesIO(f) as im:
            o_size = len(im.getvalue()) // 1024
            if o_size <= mb:
                return b64
            im_out = im
            while o_size > mb:
                img = Image.open(im_out)
                x, y = img.size
                out = img.resize((int(x*k), int(y*k)), Image.ANTIALIAS)
                im_out.close()
                im_out = io.BytesIO()
                out.save(im_out, 'jpeg')
                o_size = len(im_out.getvalue()) // 1024
            b64 = base64.b64encode(im_out.getvalue())
            im_out.close()
            return str(b64, encoding='utf8')

     

    展开全文
  • 如何将视频压缩到指定大小

    千次阅读 2019-09-17 13:32:04
    想要上传保存视频怎么弄,视频文件太大了,内存不足怎么办,如何将视频压缩到指定大小?视频压缩之后清晰度还是清楚的,这里给大家演示看下。 1、首先打开进入迅捷PDF在线转换器网页,点击下面的视频压缩按钮,...

       想要上传保存视频怎么弄,视频文件太大了,内存不足怎么办,如何将视频压缩到指定大小?视频压缩之后清晰度还是清楚的,这里给大家演示看下。

       1、首先打开进入迅捷PDF在线转换器网页,点击下面的视频压缩按钮,然后进入视频压缩,不要点错了。

    1240

     

       2、视频文件通常使用的是MP4,MKV格式,偶尔会用FLV格式,点击图片中的按钮就可以添加视频文件了。

    1240

       3、接下来可以对压缩的视频进行设置,首先点击清晰优先,主流的压缩类型是清晰优先的,接下来就可以保持原格式输出,一般是公开文件的。

    1240

       4、然后就是压缩视频了,点击开始压缩就可以压缩视频。

    1240

       5、可以看到压缩进度条,视频压缩可以看图中的2个选项,都是进度。

    1240

       6、视频压缩好小编是下载到桌面上,这是属性,可以看到解压后变得很小,压缩传输之后可以解压在查看,视频压缩就是这样。

    1240

         如何将视频压缩到指定大小就是上面这样了,在线压缩视频的话比较方便,PDF文件的其他操作也可以去试试,这里就分享到这儿了。

    转载于:https://my.oschina.net/u/3890525/blog/1846115

    展开全文
  • using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Drawing2D;using System.Linq;using System.Web;namespace Book_Painting.Common{/// &.../// 图片压缩/// &lt;/...

    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Linq;
    using System.Web;

    namespace Book_Painting.Common
    {
    /// <summary>
    /// 图片压缩
    /// </summary>
    public class ThumbnailImage
    {
    /// <summary> 
    /// 按照指定大小缩放图片,但是为了保证图片宽高比自动截取 
    /// </summary> 
    /// <param name="srcImage"></param> 
    /// <param name="iWidth"></param> 
    /// <param name="iHeight"></param> 
    /// <returns></returns> 
    public Bitmap SizeImageWithOldPercent(Image srcImage, int iWidth, int iHeight)
    {
    try
    {
    // 要截取图片的宽度(临时图片) 
    int newW = srcImage.Width;
    // 要截取图片的高度(临时图片) 
    int newH = srcImage.Height;
    // 截取开始横坐标(临时图片) 
    int newX = 0;
    // 截取开始纵坐标(临时图片) 
    int newY = 0;
    // 截取比例(临时图片) 
    double whPercent = 1;
    whPercent = ((double)iWidth / (double)iHeight) * ((double)srcImage.Height / (double)srcImage.Width);
    if (whPercent > 1)
    {
    // 当前图片宽度对于要截取比例过大时 
    newW = int.Parse(Math.Round(srcImage.Width / whPercent).ToString());
    }
    else if (whPercent < 1)
    {
    // 当前图片高度对于要截取比例过大时 
    newH = int.Parse(Math.Round(srcImage.Height * whPercent).ToString());
    }
    if (newW != srcImage.Width)
    {
    // 宽度有变化时,调整开始截取的横坐标 
    newX = Math.Abs(int.Parse(Math.Round(((double)srcImage.Width - newW) / 2).ToString()));
    }
    else if (newH == srcImage.Height)
    {
    // 高度有变化时,调整开始截取的纵坐标 
    newY = Math.Abs(int.Parse(Math.Round(((double)srcImage.Height - (double)newH) / 2).ToString()));
    }
    // 取得符合比例的临时文件 
    Bitmap cutedImage = CutImage(srcImage, newX, newY, newW, newH);
    // 保存到的文件 
    Bitmap b = new Bitmap(iWidth, iHeight);
    Graphics g = Graphics.FromImage(b);
    // 插值算法的质量 
    g.InterpolationMode = InterpolationMode.Default;
    g.DrawImage(cutedImage, new Rectangle(0, 0, iWidth, iHeight), new Rectangle(0, 0, cutedImage.Width, cutedImage.Height), GraphicsUnit.Pixel);
    g.Dispose();
    return b;
    }
    catch (Exception)
    {
    return null;
    }
    }

    /// <summary> 
    /// 剪裁 -- 用GDI+ 
    /// </summary> 
    /// <param name="b">原始Bitmap</param> 
    /// <param name="StartX">开始坐标X</param> 
    /// <param name="StartY">开始坐标Y</param> 
    /// <param name="iWidth">宽度</param> 
    /// <param name="iHeight">高度</param> 
    /// <returns>剪裁后的Bitmap</returns> 
    public Bitmap CutImage(Image b, int StartX, int StartY, int iWidth, int iHeight)
    {
    if (b == null)
    {
    return null;
    }
    int w = b.Width;
    int h = b.Height;
    if (StartX >= w || StartY >= h)
    {
    // 开始截取坐标过大时,结束处理 
    return null;
    }
    if (StartX + iWidth > w)
    {
    // 宽度过大时只截取到最大大小 
    iWidth = w - StartX;
    }
    if (StartY + iHeight > h)
    {
    // 高度过大时只截取到最大大小 
    iHeight = h - StartY;
    }
    try
    {
    Bitmap bmpOut = new Bitmap(iWidth, iHeight);
    Graphics g = Graphics.FromImage(bmpOut);
    g.DrawImage(b, new Rectangle(0, 0, iWidth, iHeight), new Rectangle(StartX, StartY, iWidth, iHeight), GraphicsUnit.Pixel);
    g.Dispose();
    return bmpOut;
    }
    catch
    {
    return null;
    }
    }

    }
    }

     

     

    调用截图

     

    展开全文
  • iOS中,我们为了节省内存,需要对图片来进行处理,来优化程序,提高程序的效率,下面是一个根据自己的要求来...一、压缩图片有两种方式,第一种是压缩图片的大小,重新生成图片的尺寸:如下 (1)

    转自:http://blog.csdn.net/dkq972958298/article/details/52750741


    iOS中,我们为了节省内存,需要对图片来进行处理,来优化程序,提高程序的效率,下面是一个根据自己的要求来重新设置图片的大小:

    一、压缩图片有两种方式,第一种是压缩图片的大小,重新生成图片的尺寸:如下


    (1)

    1. /**  
    2.  *  压缩图片到指定尺寸大小  
    3.  *  
    4.  *  @param image 原始图片  
    5.  *  @param size  目标大小  
    6.  *  
    7.  *  @return 生成图片  
    8.  */  
    9. -(UIImage *)compressOriginalImage:(UIImage *)image toSize:(CGSize)size{  
    10.     UIImage * resultImage = image;  
    11.     UIGraphicsBeginImageContext(size);  
    12.     [resultImage drawInRect:CGRectMake(00, 0, size.width, size.height)];  
    13.     UIGraphicsEndImageContext();  
    14.     return image;  
    15. }  
    (2)

    1. /**  
    2.  *  压缩图片到指定尺寸大小  
    3.  *  
    4.  *  @param img 原始图片  
    5.  *  @param sizeKB  目标大小kb  
    6.  *  
    7.  *  @return 生成图片  
    8.  */  
    9. -(UIImage *)drawImgWithOriangeImg:(UIImage *)img withMaxSize:(NSInteger)sizeKB{

          UIImage *image = img;

          UIImage *destImg = image;

          NSData *imgData = UIImagePNGRepresentation(image);

          NSInteger imgSize = [imgData length]/1000;

          NSLog(@"原图片尺寸:%ldKB",imgSize);

          if (imgSize > sizeKB *1000) {

              NSInteger ratio = ceil(((double)imgSize)/(sizeKB *1000));

              CGSize newSize = CGSizeMake(image.size.width/ratio, image.size.height/ratio);

              UIGraphicsBeginImageContext(newSize);

              [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

              destImg = UIGraphicsGetImageFromCurrentImageContext();

              UIGraphicsEndImageContext();

          }

          return destImg;

      }

    10.  




    二、第二种是修改图片的文件大小:如下

    1. /**  
    2.  *  压缩图片到指定文件大小  
    3.  *  
    4.  *  @param image 目标图片  
    5.  *  @param size  目标大小(最大值)  
    6.  *  
    7.  *  @return 返回的图片文件  
    8.  */  
    9. - (NSData *)compressOriginalImage:(UIImage *)image toMaxDataSizeKBytes:(CGFloat)size{  
    10.     NSData * data = UIImageJPEGRepresentation(image, 1.0);  
    11.     CGFloat dataKBytes = data.length/1000.0;  
    12.     CGFloat maxQuality = 0.9f;  
    13.     CGFloat lastData = dataKBytes;  
    14.     while (dataKBytes > size && maxQuality > 0.01f) {  
    15.         maxQuality = maxQuality - 0.01f;  
    16.         data = UIImageJPEGRepresentation(image, maxQuality);  
    17.         dataKBytes = data.length / 1000.0;  
    18.         if (lastData == dataKBytes) {  
    19.             break;  
    20.         }else{  
    21.             lastData = dataKBytes;  
    22.         }  
    23.     }  
    24.     return data;  
    25. }  

    这是压缩图片的两种方式。
    展开全文
  • 把文件下的所有图片压缩到256*256 path = 'E:\python论文及代码\新建文件夹 (4)\imagefusion_densefuse-master\coco2014\train_gray\'; save_path = 'E:\python论文及代码\新建文件夹 (4)\imagefusion_densefuse-...
  • import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.imageio.ImageIO; import java.awt.image.BufferedImage;...import java.io.*;... private static String resizeImageTo
  • /// 按照指定大小缩放图片,但是为了保证图片宽高比自动截取 /// </summary> /// <param name="srcImage"></param> /// <param name="iWidth"></param> /// <param name="iHeight"></param> /// ...
  • 本文转载,本人收藏用,代码仅供参考 一、图片质量压缩 /** * 质量压缩方法 * @param image * @return */ public static Bitmap compressImage(Bitmap image) { ByteArray
  • * 按原比例压缩到指定大小以内(略小) * @param srcPath 源图片地址 * @param targetPath 压缩后地址 * @return * @throws Exception */ public String CompressPicture(String srcPath,String ...
  • iOS-图片压缩到指定大小范围内KB、MB

    千次阅读 2016-05-30 17:08:56
    //图像压缩 UIImage *image = [selfscaleFromImage:imgView.image]; //保存图像 NSString *strFileName = [selfsaveImage:image]; imgView.image = image; NSLog(@"图片保存路径:%@",strFileName); } //=====...
  • 把图片压缩到指定大小(kb)

    千次阅读 2015-01-19 16:32:04
    UIImage *image=[UIImage imageNamed:@"xxoo.jpeg"]; NSData *imageData=UIImageJPEGRepresentation(image, 1.f); CGFloat size=40.f;// kb ... CGFloat scale=size/(imageData.length/1024);...
  • 上一篇说道位图的压缩技巧,解决读取图片占用大量内存的情况,今天说一下把图像压缩成文件控制文件的大小,主要用在图片上传的情况下,先介绍一个方法:bitmap.compress(CompressFormat format, int quality, ...
  • js压缩图片到指定大小

    千次阅读 2019-09-02 14:23:23
    需求:前端上传图片的时候通常需要提供指定大小以内的图片。比如不大于500KB。 思路:利用canvas转blob的时候通过quality控制图片质量,达到压缩的目的。此方法有个缺点。只能对图片格式为jpeg或webp的图片有效。...
  • Thumbnails压缩图片到指定大小

    千次阅读 2019-09-30 09:55:58
    网上看了很多demo,很多都是照搬别人的代码,不管有没有问题,有的甚至递归不关流,还有... * @Description: 压缩图片到指定大小 * @Param: desFileSize:大小,accuracy:每次缩小几倍 * @return: String * @A...
  • Android学习之压缩图片到指定大小

    千次阅读 2015-08-20 22:52:12
    关于图片压缩,是为了上传服务器时有些地方有大小限制,因此,这里我总结了两种方法,个人感觉方法一比较准确一点。 方法一: /** * 图片压缩方法一 * * 计算 bitmap大小,如果超过64kb,则进行压缩 * ...
  • android压缩照片到指定大小100%可靠

    万次阅读 2015-04-23 18:52:03
    android压缩照片到指定大小100%可靠,不会出现baos.toByteArray().length取的照片大小与实际保存的大小不符,测试百分百准确
  • Java将图片压缩指定大小

    万次阅读 2017-11-21 09:27:28
    公司有业务,需要将部分图片压缩到指定大小以内才能上传某平台。所以就学习了网上 各位大小的图片压缩代码。写了一个工具类。 工具类:package com.yulong.app.util; import java.awt.Color; import java.awt....
  • android 将图片压缩到指定大小

    千次阅读 2017-02-15 18:29:34
    一个简单的工具类实现将图片压缩指定大小
  • Bitmap压缩到指定大小: private void imageZoom() {//图片允许最大空间 单位:KBdouble maxSize =400.00;//将bitmap放至数组中,意在bitmap的大小(与实际读取的原文件要大)ByteArrayOutputStream baos = new ...
  • IOS 压缩图片到指定大小kb

    万次阅读 2016-10-11 13:24:37
    .h #import ..."当前大小:%fkb" ,( float )[imageData length]/ 1024.0 f); UIImage *compressedImage = [ UIImage imageWithData:imageData]; return compressedImage; } @end

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 307,111
精华内容 122,844
关键字:

如何压缩到指定大小