用Photoshop 处理图片,加水印后,图片占用空间大小增大了好多倍,不方便储存和发送,怎么解决这个问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Photoshop 处理图片,加水印后,图片占用空间大小增大了好多倍,不方便储存和发送,怎么解决这个问题?相关的知识,希望对你有一定的参考价值。

具体情况:加水印前图片690KB,加199KB的水印后,图片变成了8165KB.
这是公司的产品图,所以要求清晰度较高,是和水印象素大小有关吗?还是与图片的格式有关呢?求助各位高人!!!

1保存的时候和格式有关

你如果保存jpg格式, 保存的时候提示,要选择小文件、大文件,大文件 就会很清晰 但是文件大小也会随之变大

2和图片的分辨率有关
分辨率越高那文件也就会越大

3和图片的长宽比有关
图片越大(长、宽)那文件也就会随之增大

如果要很清晰的,就要保存源文件 、也就是是保存psd/psb/tiff格式 、分辨率360左右

一般清晰度的分辨率是72 存jpg格式
参考技术A 在存储时,会提示出一个压缩数值,把压缩数值降到9左右,可以节省很多的空间
也可以在储存后,按下键盘上的截屏键Print Screen SysRq 然后打开PS,新建,然后粘贴,最后储存,数值为12
参考技术B 发送前线压缩一下再发嘛

Thinkphp图片水印和文字水印

1.Thinkphp图像处理

  在TP框架中,我们经常用到图片上传,我最近写了很多关于图片上传的文章,thinkphp图片上传+validate表单验证+图片木马检测+缩略图生成等文章,今天写一下关于图片上传成功后给图片加水印文字或者加图片水印,

  

  1.1图片处理类和库

  首先,在Thinkphp\\Think\\Image类中有图像处理功能,支持Gd库和Imagick库,包括对GIf图像处理的支持。

  

  1.2实例化类库  

$image = new \\Think\\Image(); 

 

    实例化image后,默认使用GD库进行图像操作,如果需要使用Imagick库操作的话,需要把实例化写成:

 

$image = new \\Think\\Image(\\Think\\Image::IMAGE_IMAGICK); 
// 或者采用
$image = new \\Think\\Image(\'Imagick\');

 

    如果对GD库或者imageick库不了解,可以参考http://php.net/manual/zh/book.image.php,对GD库和imageick库有详细的讲解,而且是中文版的,特别通俗易懂!

 

 

    1.3打开图片资源

  如果我们要对图像进行处理,第一步,必须先打开图像资源:

    使用open方法打开图像文件进行相关操作:

 

$image = new \\Think\\Image(); 
$image->open(\'./1.jpg\');        //指向要打开的图片资源

 

    在图片上传中,把open路径指向要打开的上传文件,然后进行对该图片的处理。

   

   1.4获取图像信息

  在open图像文件以后,我们要获取图像的信息:

 

$image = new \\Think\\Image(); 
$image->open($file);//路径指向你上传的图片
$width = $image->width(); // 返回图片的宽度
$height = $image->height(); // 返回图片的高度
$type = $image->type(); // 返回图片的类型
$mime = $image->mime(); // 返回图片的mime类型
$size = $image->size(); // 返回图片的尺寸数组 0 图片宽度 1 图片高度

 

    这样我们可以获取图片的信息,接下里可以把图片的一些信息保存在数据库或者继续对图像进行处理。

 

   1.5添加图片水印

  接下来我们就可以对我们上传的图片添加水印

 

$image = new \\Think\\Image(); 
// 在图片左上角添加水印(水印文件位于./logo.png) 并保存为water.jpg
$image->open(\'./1.jpg\')->water(\'./logo.png\',\\Think\\Image::IMAGE_WATER_CENTER)->save("water.jpg");

 

 

 

 

    如图,就是把logo.png水印到1.jpg的5(居中)的位置上

   

    图片水印的位置,是根据下面的代码确定的,我们想吧图片水印在哪里,可以根据自己的需求改变

IMAGE_WATER_NORTHWEST =   1 ; //左上角水印
IMAGE_WATER_NORTH     =   2 ; //上居中水印
IMAGE_WATER_NORTHEAST =   3 ; //右上角水印
IMAGE_WATER_WEST      =   4 ; //左居中水印
IMAGE_WATER_CENTER    =   5 ; //居中水印
IMAGE_WATER_EAST      =   6 ; //右居中水印
IMAGE_WATER_SOUTHWEST =   7 ; //左下角水印
IMAGE_WATER_SOUTH     =   8 ; //下居中水印
IMAGE_WATER_SOUTHEAST =   9 ; //右下角水印

    还可以支持水印图片的透明度(0~100,默认值是80)

 

$image = new \\Think\\Image(); 
// 在图片左上角添加水印(水印文件位于./logo.png) 水印图片的透明度为50 并保存为water.jpg
$image->open(\'./1.jpg\')->water(\'./logo.png\',\\Think\\Image::IMAGE_WATER_NORTHWEST,80)->save("water.jpg"); 

 

 

    1.6给图片添加文字水印

 

$image = new \\Think\\Image(); 
// 在图片右下角添加水印文字 ThinkPHP 并保存为new.jpg
$image->open(\'./1.jpg\')->text(\'www.THZ.CN\',\'./1.ttf\',20,\'#000000\',\\Think\\Image::IMAGE_WATER_SOUTHEAST)->save("new.jpg"); 

 

   参数详解:text(\'要水印的文字\',字体,字体大小,字体颜色,\'文字要水印的位置\');

   效果图:

   

    在这里,制作的时候会出现水印文字乱码的问题:

    解决方案:1.出现乱码或者出现框框,是因为你所选用字体的原因,有些字体不支持中文,当我们要水印中文的时候会出现乱码问题,这个时候,我们要去下载支持中文的字体,例如:微软雅黑,宋体……

    2.大部分的字体都支持英文,所以我们水印的时候要尽量水印英文字母吧,这样不容易出错。

    3.我们要想水印一些奇怪的字,比如韩语,日本语……,我们需要去下载对应的字体。

    4.如果我们的字体只用于windows,我们可以到C:\\Windows\\Fonts中选取我们要用的字体(不是很推荐,我们要想用,去下载最新的字体,比较全面,而且支持生成的字比较多)。

   

 

以上是关于用Photoshop 处理图片,加水印后,图片占用空间大小增大了好多倍,不方便储存和发送,怎么解决这个问题?的主要内容,如果未能解决你的问题,请参考以下文章

为啥ps给图片加水印后像素会变大

ps技术--批量给图片加水印

Photoshop去图片水印——适用复杂图片上有水印

图片怎么快速批量去水印?

php如何给图片加文字水印

在自己的照片上加水印 logo用啥软件?