网站获得流量最好的方法是什么 ( ),网站内链规划,网站开发技术包括什么内容,成都网站优化哪家好大概可以分为以下几类#xff1a;更换图片格式#xff0c;质量压缩#xff0c;采样率压缩#xff0c;缩放压缩#xff0c;调用jpeg压缩等
1.设置图片格式
Android目前常用的图片格式有png#xff0c;jpeg和webp#xff0c; png#xff1a;无损压缩图片格式#xff0…大概可以分为以下几类更换图片格式质量压缩采样率压缩缩放压缩调用jpeg压缩等
1.设置图片格式
Android目前常用的图片格式有pngjpeg和webp png无损压缩图片格式支持Alpha通道Android切图素材多采用此格式 jpeg有损压缩图片格式不支持背景透明适用于照片等色彩丰富的大图压缩不适合logo webp是一种同时提供了有损压缩和无损压缩的图片格式派生自视频编码格式VP8从谷歌官网来看无损webp平均比png小26%有损的webp平均比jpeg小25%~34%无损webp支持Alpha通道有损webp在一定的条件下同样支持有损webp在Android4.0API 14之后支持无损和透明在Android4.3API18之后支持 采用webp能够在保持图片清晰度的情况下可以有效减小图片所占有的磁盘空间大小
2.质量压缩
质量压缩并不会改变图片在内存中的大小仅仅会减小图片所占用的磁盘空间的大小因为质量压缩不会改变图片的分辨率而图片在内存中的大小是根据widthheight一个像素的所占用的字节数计算的宽高没变在内存中占用的大小自然不会变**质量压缩的原理是通过改变图片的位深和透明度来减小图片占用的磁盘空间大小所以不适合作为缩略图可以用于想保持图片质量的同时减小图片所占用的磁盘空间大小。**另外由于png是无损压缩所以设置quality无效以下是实现方式 /*** 质量压缩** param format 图片格式 jpeg,png,webp* param quality 图片的质量,0-100,数值越小质量越差*/public static void compress(Bitmap.CompressFormat format, int quality) {File sdFile Environment.getExternalStorageDirectory();File originFile new File(sdFile, originImg.jpg);Bitmap originBitmap BitmapFactory.decodeFile(originFile.getAbsolutePath());ByteArrayOutputStream bos new ByteArrayOutputStream();originBitmap.compress(format, quality, bos);try {FileOutputStream fos new FileOutputStream(new File(sdFile, child.jpg));fos.write(bos.toByteArray());fos.flush();fos.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}3.采样率压缩
采样率压缩是通过设置BitmapFactory.Options.inSampleSize来减小图片的分辨率进而减小图片所占用的磁盘空间和内存大小。 设置的inSampleSize会导致压缩的图片的宽高都为1/inSampleSize整体大小变为原始图片的inSampleSize平方分之一当然这些有些注意点 1、inSampleSize小于等于1会按照1处理 2、inSampleSize只能设置为2的平方不是2的平方则最终会减小到最近的2的平方数如设置7会按4进行压缩设置15会按8进行压缩。 具体的代码实现方式如下 /*** param inSampleSize 可以根据需求计算出合理的inSampleSize*/public static void compress(int inSampleSize) {File sdFile Environment.getExternalStorageDirectory();File originFile new File(sdFile, originImg.jpg);BitmapFactory.Options options new BitmapFactory.Options();//设置此参数是仅仅读取图片的宽高到options中不会将整张图片读到内存中防止oomoptions.inJustDecodeBounds true;Bitmap emptyBitmap BitmapFactory.decodeFile(originFile.getAbsolutePath(), options);options.inJustDecodeBounds false;options.inSampleSize inSampleSize;Bitmap resultBitmap BitmapFactory.decodeFile(originFile.getAbsolutePath(), options);ByteArrayOutputStream bos new ByteArrayOutputStream();resultBitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos);try {FileOutputStream fos new FileOutputStream(new File(sdFile, resultImg.jpg));fos.write(bos.toByteArray());fos.flush();fos.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}4.缩放压缩
通过减少图片的像素来降低图片的磁盘空间大小和内存大小可以用于缓存缩略图 实现方式如下 public void compress(View v) {File sdFile Environment.getExternalStorageDirectory();File originFile new File(sdFile, originImg.jpg);Bitmap bitmap BitmapFactory.decodeFile(originFile.getAbsolutePath());//设置缩放比int radio 8;Bitmap result Bitmap.createBitmap(bitmap.getWidth() / radio, bitmap.getHeight() / radio, Bitmap.Config.ARGB_8888);Canvas canvas new Canvas(result);RectF rectF new RectF(0, 0, bitmap.getWidth() / radio, bitmap.getHeight() / radio);//将原图画在缩放之后的矩形上canvas.drawBitmap(bitmap, null, rectF, null);ByteArrayOutputStream bos new ByteArrayOutputStream();result.compress(Bitmap.CompressFormat.JPEG, 100, bos);try {FileOutputStream fos new FileOutputStream(new File(sdFile, sizeCompress.jpg));fos.write(bos.toByteArray());fos.flush();fos.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}5.其他
在缩放压缩的时候可通过Bitmap.createBitmap(bitmap.getWidth() / radio, bitmap.getHeight() / radio, Bitmap.Config.ARGB_8888)如果不需要图片的透明度可以将ARGB_8888改成RGB_565这样之前每个像素占用4个字节现在只需要2个字节节省了一半的大小。
总结
1、使用webp格式的图片可以在保持清晰度的情况下减小图片的磁盘大小是一种比较优秀的google推荐的图片格式 2、质量压缩可以减小图片占用的磁盘空间不会减小在内存中的大小 3、采样率压缩可以通过改变分辨率来减小图片所占用的磁盘空间和内存空间大小但是采样率只能设置2的n次方可能图片的最优比例在中间 4、尺寸压缩同样也是通过改变分辨率来减小图片所占用的磁盘空间和内存空间大小缩放的尺寸没有限制