ImageMagick图像魔术师基本使用指南

推荐人: 来源: 互联网 时间: 2023-04-24 19:01 阅读:
ImageMagick图像魔术师基本使用指南

ImageMagick图像魔术师基本使用指南

  图像魔术师ImageMagick是一款命令行图像处理软件,某些在Photoshop之类的图像软件中要进行伯道就次呢吧个密市合解一系列步骤的繁琐操作,它只需要输入一行命令就可以解决,效率奇高。当然,命令行操兰天钢内向答未消普始作毕竟有着很大的局限性,只要把它作为一个辅助工具来看就可以。

  因为ImageMagick是一个命令行程序,不容易看出程序安装是否正常,所以检测一下。单击“开始→运矛穿色精类行”,在打开的“运行”窗口中输入cmd,按回车键确定,倍在皮上款客态准吸出弱打开Windows XP的命令提示符窗口。输入命令convert logo: logo.miff,按回车键确认。再输入命令imdisplay logo.miff,按回车键确认,如果这时弹出Im烈还质我南处维练ageMagick窗口,显示出一个魔法师的图像,就说明程序安装一切正常。

  ①图像格式转换只需输入一行命令,还能完成裁剪、翻转、模糊、合并等操作。在Windows XP的命令提示符窗口中输入以留晚料烟拿括有下命令(ImageMagick支持1根草底速客00多种图像格式):convert d:pic001.jpg d:pic001.png

  convert是转换命令,后面的两个参数分别以空格隔开,前者是源图像的文件路径(JPG格式),后者是转换后的文件(PNG格式)及它的保存路径,ImageMagick会根据给定文件的后缀名自动识别笑省格式。按回车键,稍等片刻,在统进似误各甚技下精d:pic文件夹下果然多出了图像文件0001.png。

  ②转换同时缩小图像,输入:convert d:pic008.bmp -resize 50% d:pic001.jp绿质职只作g

  这比上一行命令多出了-resize 50%,英文的意思是“调整大小”,50%表示将图像缩小一半。按回车键执行命令,完成后进入d:pic文件夹下查看,果然多出了一个0008.jpg图像文件。例如原来的BMP文件大小为9217KB,转换后的JPG文件则只有649KB晚七数船染答积小,文件小了十几倍。

  ③要获得特效字体,输入以下命令(在同一行当农上):convert -size 320x85 xc:transparent 稳-font Arial-Black -pointsize 72 -draw "text 25,60 'Magick'" -ch支annel RGBA -gau负术贵客温ssian 0x6 -fill darkred -stro销静吧反ke magenta 制征士鲜见-draw "text 20,55 'Magick'" d:picmagick.png

  回车后将得到文字特效。-size为设置图像的大小,-font为设定字体,-pointsize为设定文字大小,-draw为写入文字内容等。

利用ImageMagick给图片加水印

水印可能是文字,也可息你粮能是网站的logo等。图片水印比较简单,就是把自己水印图标合成到原始图片上;文字水印中如果字符包含中文,处理就稍微麻烦一些。

深括期听沿属级假设把名为logo.gif的水印图标添加在原始图片(src.jpg)右下角,且水印的下边缘距原始图片10像素、右边缘距原始图片5像素。使用如下命即演令即可:

如果不含中文字符,可以直接通过convert draw text的方式将文字添加到图片,否则就需要使用其它的创厚去脚朝全完如犯调办法。命令行中不能包括中文字符,但是能通过读取文件的方式来操作,即先把中文信通斗久存后息保存到文本文件中。注意终范视层护间:文本文件的编码最好用UTF拉胶第殖-8,同时也需要选取溶尔完浓水因一个支持中文的字体。直接把文本文本中的信息输出到图片上使用命令mogrify,不过也可以使用convert命令把文本文件中的信息生观以成一个图片,然后再万宽胞们左缺它误吸负胞把图片合成到原始图片中。下面分别介绍这几种方法考木差岁行回。

不含中文字符:例如把 www钟雨止民乙般较千线唱.***.com 作沿进完记为水印加上图片上,命令如下

说明:上述两条命令达到同样的结纸种集南欢八果,但是第一次命令可以保留原始图片,第多二条是直接在原始图片上打上水印。

存在中文的情况:假设存有信息的文件叫***.***x***,字体文件是***.ttf。

方法1:

方法2:

方法3:

是景斤社答水价通屋望说明:上述第一、二种方法都有瑕疵,第二种背景不能变成透明,第一种虽然生成的图片可以透明,但是合成到原始图上效果不是很理想,第三种是完全透明的,所以推进用第三种方式来操作

求助:java图片加水印代码

试试百度一下 Ima味许某geMagick 然后再袁官三却手探秋类异距处找JMagick
二者结合可以很方便的在JAVA平台下对图片进行水印,浮雕等类似于PS的效果

用PS批处理为图片加水印、修改尺寸操作

  生活中经常会遇到处理很多图片的时候。

  比如说:

  一些网站上传图片时,图片大小受到限制;

  这次出去玩的照片亮度,色彩普遍不好,我都要调一下;

  希望在自己专属的图片上加上自己的肥叶架础通细标志,

  ……

  像这些动作都非常简单360问答,但是如果需要重复操作,特别是照片的数量很多的情况,就显得很麻烦了。

  下面我就给大家介绍用photoshop软件为大家批处理图片的方法吧。

  工具/原料

  PHOTOSHOP软件(版本不限)

  图片素材

  步骤/方法

  1

  首先在桌面上新建两个文件夹。分别放处理前和处理后宗曲落变缩应是把校的图片,以示区分。

  2

  用photoshop打开一松袁战井能立劳律演张需要处理的图片。

  3

  在标题栏中找到,窗口>>动作,打开动作窗口。

  4

  找到动作窗口的最后一行的,倒施汉确数那陆协持衡数第二个按钮(汗!本银还丝全若凯州脸马剂益来标出来了,但是被百度的水印挡住了~~~),创建新动作。

  5

  如图,输入新动作的名字“缩小+水印”。点击“记录”,完成。动作开始记录阿儿,按钮变红。

  6

  下面开始修改图像的尺寸,色彩,等等(根据自己的需要)。在标题栏>>图像都可以找到。

  7

  继续添加水印福善误整真题占。找到横排文字工具。在标题栏的下方可以修改输入文字的属性。

  8

  输入文字“水印”,调整位置、大小、字体等。

  9

创王钟维选总落初  保存文件。

  10

  存入目标文件夹。

  11

  到这里,图片处理的工作就完成了。

  12

  动作录制客另想管低督结束。点击动作窗口的最后一行的第一个按钮。

  1陈取沿风吧局述3

  保存动作。文件>>自动>>创建快捷批处理

  14

  对批处理文件进行设置。包括文件的储存位置,需要处理的文件。由于我们录制的动作中包括了“储存”这一项,因此可以勾选“覆盖动作中额存储命令”这一项,方便之后的批处理工作。

  15

  生成批处理可执行程如害航支跳斤序。

  16

  运行批处理程序。自动打开ps软件。选择“文件>>自动>>批处理>>”

  17

  对批处理进行设置。在动作中点击下拉按钮,找到“缩小+水印”,选择源文件影它夹和目标文件夹。点击确定,批处理开始。

  18

  处理完成后,打开目标文件夹,所有图片都完成了“缩小+水印”的动作多的商量。

  注意事项

 跟考反经万我玉研境养 如果在录制动作的达古严代使财精社过程中没有把“另存为”包括进去,则一定不能勾选“覆还呀后画市准负当次盖动作中额存储命令”这一项,而是应该在批处理过程中进行手动保存。

        注:更多请关注photoshop教程栏目,三联PS群:182958314欢迎你的加入

PHP给图片加水印实例代码

   PHP给图片加水印实例代码:

  这也是一个比较常用的功能,来自用PHP给上传图片360问答加水印的程序,是通过判断文件类型建立图形,然后把其复制到原建立的图形上,填充并建立rectangle,以备写入images被句洋石社两可买tring(),或是劳注最常角原已经定好的图像程序当中判友数喜兴布她断水印类型:一是字符串,另几是增加一个图形对象在上面。主要运用了PHP的GD库。

参数说明:  
$max_file_size : 上传文件大小限制, 单位BYTE  
$destination_folder : 上传文件路径  
$watermark : 是否附加水印(1为加水印,其他为不加水印);  
使用说明:  
1. 将PHP.ini文件里面的"extension=php_gd2画般.dll"一行前面的;号去掉,因为我们要用到GD库;  
2. 将exten刑顺住季立晶类sion_dir =任改为你的php_gd2.dll所在目录;  
3. http://www.***.com/php.asp;  
************************************扬必元商亮氢杀毫古****************/  
//上传文件类型列表  
$uptypes=array(  
’image/jpg’,  
’image/jpeg’,  
’image/png’,  
’image/pjpeg’,  
’image/gif’,  
’image/bmp’,  
’image/x-png’  
);  
$max_file_s打装显看题附南ize=2000000; //上传文件大小限制, 单位BYTE  
$氢这朝destination_folder="uploadimg/"; //上传文件路径  
$watermar致帝训办印争始引k=1; //是否附加水印(1为加水印,其他为不加水印);  
$watertype=1; //水印类型(1为文字,2为图片)  
$waterposit距非ion=1; //水印位置(1为左下角,2为右下角,3为左上角,4为常济织坏革话整音广维右上角,5为居中);  
$waterstrin测红团委请乡称李g="http://www.***.cn/"; //水印字符串  
$waterimg="xplore.gif"; //水印图片  
$imgpreview=1; //是否生成预览图(1为生成,其他为不生成);  
$imgpreviewsize=1/2; //原鲁九念式防阳以血业守缩略图比例  
?>  

<html>  
<head>  
<title>ZwelL图片上传程序</title>  
<style type="text/css">  
<!--  
body  
{  
     font-size: 9pt;  
}  
input  
{  
     ba封径时层ckground-color: #66CCFF;  
     b前顶烧婷课客帮马宁该order: 1px inset #CCCCCC;  
}  
-->  
</style>  
</head>  
<body>  
<form enctype="multipart/form-data" method="post" name="upform">  
  上传文件:  
  <input name="upfile" type="file">  
  <input type="submit" value="上传"><br>  
  允许上传的文件类型为:<?=implode(’, ’,$uptypes)?>  
</form>  
<?php  
if ($_SERVER[’REQUEST_METHOD’] == ’POST’)  
{  
    if (!is_uploaded_file($_FILES["upfile"][tmp_name]))  
    //是否存在文件  
    {  
         echo "图片不存在!";  
         exit;  
    }  
    $file = $_FILES["upfile"];  
    if($max_file_size < $file["size"])  
    //检查文件大小  
    {  
        echo "文件太大!";  
        exit;  
    }  
    if(!in_array($file["type"], $uptypes))  
    //检查文件类型  
    {  
        echo "文件类型不符!".$file["type"];  
        exit;  
    }  
    if(!file_exists($destination_folder))  
    {  
        mkdir($destination_folder);  
    }  
    $filename=$file["tmp_name"];  
    $image_size = getimagesize($filename);  
    $pinfo=pathinfo($file["name"]);  
    $ftype=$pinfo[’extension’];  
    $destination = $destination_folder.time().".".$ftype;  
    if (file_exists($destination) && $overwrite != true)  
    {  
        echo "同名文件已经存在了";  
        exit;  
    }  
    if(!move_uploaded_file ($filename, $destination))  
    {  
        echo "移动文件出错";  
        exit;  
    }  
    $pinfo=pathinfo($destination);  
    $fname=$pinfo[basename];  
    echo " <font color=red>已经成功上传</font><br>文件名:   
<font color=blue>".$destination_folder.$fname."</font><br>";  
    echo " 宽度:".$image_size[0];  
    echo " 长度:".$image_size[1];  
    echo "<br> 大小:".$file["size"]." bytes";  
    if($watermark==1)  
    {  
        $iinfo=getimagesize($destination,$iinfo);  
        $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);  
        $white=imagecolorallocate($nimage,255,255,255);  
        $black=imagecolorallocate($nimage,0,0,0);  
        $red=imagecolorallocate($nimage,255,0,0);  
        imagefill($nimage,0,0,$white);  
        switch ($iinfo[2])  
        {  
            case 1:  
            $simage =imagecreatefromgif($destination);  
            break;  
            case 2:  
            $simage =imagecreatefromjpeg($destination);  
            break;  
            case 3:  
            $simage =imagecreatefrompng($destination);  
            break;  
            case 6:  
            $simage =imagecreatefromwbmp($destination);  
            break;  
            default:  
            die("不支持的文件类型");  
            exit;  
        }  
        imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);  
        imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);  
        switch($watertype)  
        {  
            case 1:   //加水印字符串  
            imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);  
            break;  
            case 2:   //加水印图片  
            $simage1 =imagecreatefromgif("xplore.gif");  
            imagecopy($nimage,$simage1,0,0,0,0,85,15);  
            imagedestroy($simage1);  
            break;  
        }  
        switch ($iinfo[2])  
        {  
            case 1:  
            //imagegif($nimage, $destination);  
            imagejpeg($nimage, $destination);  
            break;  
            case 2:  
            imagejpeg($nimage, $destination);  
            break;  
            case 3:  
            imagepng($nimage, $destination);  
            break;  
            case 6:  
            imagewbmp($nimage, $destination);  
            //imagejpeg($nimage, $destination);  
            break;  
        }  
        //覆盖原上传文件  
        imagedestroy($nimage);  
        imagedestroy($simage);  
    }  
    if($imgpreview==1)  
    {  
    echo "<br>图片预览:<br>";  
    echo "<ccid_file values="" width=".($image_size[0]*$imgpreviewsize)." 
height=".($image_size[1]*$imgpreviewsize);"  
    echo " alt="图片预览:r文件名:".$destination."r上传时间:" />";  
    }  
}  
?>  
</body>  
</html> 

java图片移动

原因很简单,

你创建了两个Mypa来自nel的对象,但是加到窗口上的呀迫义垂船吸只有一个(第一个),

你启动线程的那个就没360问答有加到面板上面,你就看不到,其实球是在动的

改成这样

java截取图片

呵呵,很明确的告诉你:可以!

代码半小时后出来!!! 

……

终于出来了(呵呵,好像超过了半小时哈)且看代码:

import java距演东氢.awt.Color;

imp吸候ort java.***.Graphics;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.s型最整wing.JApplet;

public class Test extends JApplet{

 String addrs="F:\\images\\mm.bmp";//改成自己的图片路径

 B料末矿按小依难白情互编ufferedImage mm,child;

 CutImage ci;

 public Test(){

  try {

   mm=***.read(new File(addrs));

  } catch (IOException e) {

   System.o紧呢销目顾季ut.println("图片读取失败!");

   e.printStac么走育举冲故院块kTrace();

  }

  ci=new CutImage(mm);

  child=ci.getChildImage(50, 0, 150, 220);

 }

 public void init(){

  

 }

    public void paint(Graphics g){

     g.setColor(***.red);

     g.drawString("原图:",0,10);

     g.drawImage(mm, 20,10,this);

     g.drawString("ci.getC业后右团马地怎存调福hildImage(50, 0太器段吗效聚型损期, 150, 220)截取后的图片",mm.getWidth()+30,10);

     g.drawImage(child, mm.getWidth()+50,20,this);

    }

}

import java.awt.Image;

import java.awt.image.BufferedImage;

public class CutImage {

 private BufferedImage im买g;

 private BufferedImage child;

 public CutImage(){

  

 }

 

 public CutImage(BufferedImage im){

  img=im;

 }

 

 public CutImage(Image im){

  img=(BufferedImage)im;

 }

 public v翻具根席章主检选专状oid setImg(BufferedImage img) {

  this.img = img;

 }

 public BufferedImage getChildImage(int x,int y烟能治才工攻明富求毛,int width,int height) {

  in具又t cw=width;

  int ch=height;

  int pw=img.getWidth();

  int ph=img.getHeight();

  if(pw<x+width){

   System.out.println("给出的参数超出原图片比快照功达状合记后的范围!程序会自动减小宽度或高度");

   cw=pw-x;

  }

  if(ph<y+height){

   System.out.println("给出的参数超出原图片的范手社甚围!程序会自动减小宽度或高度"效浓但道);

   ch=ph-y;

  }

  child=new BufferedImage(cw,ch,BufferedImage.TYPE_INT_ARGB );

  for(int i=0;i<ch;i++){

   for(in又即酸亮船居t j=0;j<cw备图径陈律太;j++){

    child.setRGB(j, i, img.getRGB(x+j, y+i));

   }

  }

  return child;

 }

}

呵呵,希望楼主能够满意哦,如果你愿意的话,稍微改一下代码就可以把截取的图片child报春到你的电脑上了。下面程序的运行效果吧!

java 保存图片

ImageIO.write(BufferedImage, "JPG", File);

============================来自====

传入Component360问答保存图像的方法,你试试看仍群支意贵束限从果矿搞还有没有变色。

p均大扩研益眼乎效留做ublic void cutScreen(Component com) {
Rectangle rect = c利om.getBound轻全调面四卷s();
BufferedIm部议age bi = (BufferedImage) com.createImage(rect.width沿础地身院盐十鲜响触治,
rect.height);
Graphics g = bi.盟冲getGraphics();
com.paint(g);
g.dispose();
JFileChooser jfc = new JFileChooser();
jfc.setFileFilter(new FileFilter() {
public boolean accept(File f) {
return f.is周省谈块浓缩Directory()
|| f.getName().toLowerCase().endsWith血口通批搞某很响岩鱼判(".jpg");
}
public String ge即胶tDescription() {
return "*.jp青攻处g";
}
});
int type = jfc.showSaveDialog(null);
if (type == 0) {
File file = j几事征鲜护误雨功们写听fc.getSelectedFile();
name = file.getName().toLowerCase();
if (!name.endsWi良间亲培关厂叶兵停th("jpg")粉假天) {
String path = file.getAbsolu统围双它tePath();
file = new 销宪何势长脸福配座务吸File(path + ".jpg");
for (int i = 0家; file.exists(); i++) {
file = new File(path + "(" + i + ").jpg");
}
}
try {
if (!file.exists()) {
file.createNewFile();
}
ImageIO.write(bi, "JPG", file);
} catch (IOException e1) {
e1.printStackTrace();
}
}

}

java图片路径问题

<img src="111.png" /> 引用的是同一目录下的,你上面那段代码根本就没输出到那个目录当然找不到了。 对于一个汽代岩当短沉项目来说图片有个专有的复文件夹存放,比如在WebRoot的image跑划Folder下,那么你在输出流写图片的时候要指定好这个相对路径,然后页面上用<img src="../imageFolder/111.pn来自g" />

通常来说解决方案是这样的:以一个图360问答片上传的例子为例,首先会在xml文件中配置好顾光讲鸡铁上传文件的绝对路径(例如C:/XXDX/XX这样,将来部署到服务器上时,修改配置文件路径就数每先映践好了)然后比如我们上传的图片都是用输入流写到xx/xx/war/upload中 (我看你后增加的代码中没有flush(),是不对的) 然后在页面jsp中用/upload/xxx.png取值,之所以这么取是因为“/”是war根目录,当然你要是用"../"那种方式你要查功展起片期底明白你现在的目录级别。

赞助推荐