精华内容
下载资源
问答
  • 如题所看到的,最初我是直接用PS的剪切工具,但发现有时不太好用。由于你必须提前设好要剪切的尺寸。...新建图层,假设是png图片就不用新建图层了。2、选择工具栏里的圆角矩形工具。快捷键U.在上面能够设置圆角...

    如题所看到的,最初我是直接用PS的剪切工具,但发现有时不太好用。

    由于你必须提前设好要剪切的尺寸。

    也可能是我这小白不知道咋用。

    下为摸索到的最好方法:

    1、打开原图。新建图层,假设是png图片就不用新建图层了。


    2、选择工具栏里的圆角矩形工具。快捷键U.在上面能够设置圆角的半径。

    另外还要设置模式为路径而非形状图层。




    3、先按下shift,就会成正方形选择。然后就拉区域,最后先松开鼠标。再松开shift。得到下图:



    4、按下ctrl键。同一时候点击所选区域,就能够移动了。


    5、然后按ctrl+enter快捷键选定所选区域,周围有虚线在移动。

    按下ctrl+C,把所选区域复制了。这块有的链接说按ctrl+I进行反选,也有的人说按ctrl+shift+I反选。删除反选区域即可了,我是没删除成功,所以用ctrl+C的方法。按ctrl+J复制区域图层我也没试验成功。


    6、文件----新建,也可按ctrl+N新建一个画布,背景选为透明。宽和高是像素的单位。这里是300*300.然后按ctrl+V就复制进来了。并且默认就是居中的。假设5步骤里按ctrl+J的话能够看到新建了一个图层。然后点最小化当前窗体,能够将多个视图打开。将新建的图层拖到新建的画布上,但遗憾的是这样的方法拖过去不是居中显示的。咱家么找到移动居中的方法。




    最后看看我的成果。成功分离了中间的ong字大笑:






    备注:

    按ctrl+tab能够切换多个视图

    Ctrl+A 全选

    Ctrl+D 取消选择


    转载于:https://www.cnblogs.com/ldxsuanfa/p/10939417.html

    展开全文
  • 有个比较怪的需求: 用户拷屏后,需要在网页上粘贴图片,查了很久的资料也没有头绪.用applet+数字签名倒是可以,但是用户不同意,也不能用activex, 各位高手可以谈谈自己的思路吗?有没有什么好的办法?...
    有个比较怪的需求: 用户拷屏后,需要在网页上粘贴图片,查了很久的资料也没有头绪.用applet+数字签名倒是可以,但是用户不同意,也不能用activex,
    各位高手可以谈谈自己的思路吗?有没有什么好的办法?
    展开全文
  • QT实现头像图片剪切

    千次阅读 2015-02-28 11:30:40
    近期在做一个qt项目,在用户选择头像图片后,需要将图片...1. 怎样去实现裁剪 对于一张载入的图片,要实现用户自定义裁剪,那么首先我需要有一个能够响应用户自由缩放的边框,当用户缩放到心仪大小,再摆到适当位置,


    近期在做一个qt项目,在用户选择头像图片后,需要将图片载入,并对其进行用户自定义裁剪。通过研究参照各流行软件的裁剪方式后,发现qq实现的裁剪比较好看,于是,我想那就做一个和qq相似的吧。先放一张qq实现的效果,然后最后再放我实现的效果。




    1. 怎样去实现裁剪

    对于一张载入的图片,要实现用户自定义裁剪,那么首先我需要有一个能够响应用户自由缩放的边框,当用户缩放到心仪大小,再摆到适当位置,我能知道框的位置及长宽,那么获取框里面的图片就很简单了。另外,我需要阴影,只有在框里面的图像部分是正常的,其他部分均被阴影覆盖。于是,实现该功能,大致需要两件东西,框及阴影。

    框的实现可以定义无边框的窗口,如widgetframe,当一个窗口被定义为无边框时,那么该窗口势必无法再响应鼠标的拖动事件,也就是该边框将不能移动,也不能缩放,因此,我们需要重写鼠标事件,实现边框的拖动,以及自由缩放。

    阴影的实现可以使用黑色的画笔,并设置透明度,去填充边框之外的区域。

     

    2. 缩放边框的实现

    要想缩放边框实现拖动及自由缩放,那么需要重写该边框的mousePressEvent、mouseMoveEvent、mouseReleaseEvent三个事件。具体见如下代码

    2.1对mousePressEvent的重写

    m_startPoint 用户记录鼠标点击下的事件,  而后期只需要算出移动时鼠标的坐标与初始坐标的差值,进行移动即可。代码如下:

    void CutDialog::mousePressEvent(QMouseEvent * event)
    {
    	m_startPoint = event->pos();
    	m_mouse_down = event->button() == Qt::LeftButton;
    }



    2.2 对mouseMoveEvent 的重写      

    在鼠标移动过程中,获取鼠标当前的位置,判断鼠标当前状态,如果是落在边框上,则改变鼠标形状成对应的边界鼠标形状,如果落在窗口区域内,则改变鼠标形状为移动形状。如果鼠标在移动之前有点击事件,则进行相应判断,决定是移动还是放大缩小。                                                                                                                                                                                                                                  

    void CutDialog::mouseMoveEvent(QMouseEvent * event)
    {
    	QPoint dragPoint = event->pos();
    	int x = event->x();
    	int y = event->y();
    	if(m_mouse_down)
    	{
    	    QRect g = getResizeGem(geometry(), dragPoint);
    <span style="white-space:pre">		</span>//实现对当前窗口的拖放
    		if(parentWidget()->rect().contains(g))
    			setGeometry(g);
    		m_startPoint = QPoint(!m_right? m_startPoint.x():event->x(),!m_bottom? m_startPoint.y():event->y());
    	<span style="white-space:pre">	</span>
    <span style="white-space:pre">		</span>//实现对当前的移动
    		if(!m_left && !m_right && !m_bottom && !m_top)
    		{
    			QPoint p = QPoint((pos().x()+dragPoint.x() - m_startPoint.x()), (pos().y()+dragPoint.y() - m_startPoint.y()));
    			QPoint dragEndge = p;
    			dragEndge.setX(dragEndge.x() + rect().width());
    			dragEndge.setY(dragEndge.y() + rect().height());
    			p.setX(p.x() < 0? 0 : p.x());
    			p.setX(dragEndge.x() > parentWidget()->width()?parentWidget()->width()-rect().width():p.x());
    			p.setY(p.y() < 0? 0 : p.y());
    			p.setY(dragEndge.y() > parentWidget()->height()?parentWidget()->height()-rect().height():p.y());
    			move(p);
    		}
    	
    	}
    	else
    	{
    <span style="white-space:pre">		</span>//根据位置判断相应的鼠标形状
    		QRect r = rect();
    		m_left = qAbs(x - r.left())  < 5;
    		m_right = qAbs(x - r.right()) < 5;
    		m_bottom = qAbs(y - r.bottom()) < 5;
    		m_top = qAbs(y - r.top()) < 5;
    		bool lorr = m_left | m_right;
    		bool torb = m_top | m_bottom;
    		if(lorr && torb)
    		{
    			if((m_left && m_top) || (m_right && m_bottom))
    			{
    				setCursor(Qt::SizeFDiagCursor);
    			}
    			else
    				setCursor(Qt::SizeBDiagCursor);
    		}
    		else if(lorr)
    			setCursor(Qt::SizeHorCursor);
    		else if(torb)
    			setCursor(Qt::SizeVerCursor);
    		else
    		{
    			setCursor(Qt::SizeAllCursor);
    			m_bottom = m_left = m_right = m_top = false;
    		}
    	}
    }

    实现鼠标在移动过程中获得新的鼠标欲拉伸的大小,在这里需要注意的是,因为剪切的图片应该是正方形,所以,在改变大小时长和宽都要做等比例的缩放。代码实现如下:                                                                                                                                                                                                                                                                                          

    QRect CutDialog::getResizeGem(QRect oldgeo, QPoint mousePoint)
    {
    	QRect g = oldgeo;
    	bool lorr = m_left | m_right;
    	bool torb = m_top | m_bottom;
    	int dx = mousePoint.x() - m_startPoint.x();
    	int dy = mousePoint.y() - m_startPoint.y();
    	if(lorr && torb)
    	{
    		int maxLen = qMin(qAbs(dx),qAbs(dy));
    		if(m_left && m_top && dx*dy >0)
    		{
    			g.setLeft(dx >0 ?g.left() + maxLen : g.left() - maxLen);
    			g.setTop(dy >0? g.top() + maxLen : g.top() - maxLen);
    		}
    		if(m_right && m_top && dx*dy < 0)
    		{
    			g.setRight(dx>0 ? g.right() + maxLen:g.right() - maxLen);
    			g.setTop(dy >0? g.top() + maxLen : g.top() - maxLen);
    		}
    		if(m_right && m_bottom && dx*dy > 0)
    		{
    			g.setRight(dx>0 ? g.right() + maxLen:g.right() - maxLen);
    			g.setBottom(dy >0? g.bottom() + maxLen : g.bottom() - maxLen);
    		}
    		if(m_left && m_bottom && dx*dy < 0)
    		{
    			g.setLeft(dx >0 ?g.left() + maxLen : g.left() - maxLen);
    			g.setBottom(dy >0? g.bottom() + maxLen : g.bottom() - maxLen);
    		}
    		return g;
    	}
    	else if(lorr)
    	{
    		if(m_left)
    			g.setLeft(g.left() + dx);
    		if(m_right)
    			g.setRight(g.right() + dx);
    		int len = g.width() - oldgeo.width();
    		int intHight = (int) len/2.0;
    
    		g.setTop(g.top() - intHight);
    		g.setBottom(g.bottom() + len - intHight);
    	}
    	else if(torb)
    	{
    		if(m_bottom)
    			g.setBottom(g.bottom() + dy);
    		if(m_top)
    			g.setTop(g.top() + dy);
    		int dheigt = g.height() - oldgeo.height();
    		int intWidth = (int) dheigt/2.0;
    
    		g.setLeft(g.left() - intWidth);
    		g.setRight(g.right() + dheigt - intWidth);
    	}
     	return g;
    }

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 2.3 对mouseReleaseEvent的重写


    void CutDialog::mouseReleaseEvent(QMouseEvent * event)
    {
    	m_mouse_down = false;
    }

     

    3. 阴影的实现

    阴影的实现需要创建新的窗口类,并在该窗口类中初始化上面的缩放边框,并对边框外的区域进行阴影填充。代码如下:

    void PhotoShotDialog::paintEvent(QPaintEvent *e)
    {
    	QPainterPath painterPath;
    	QPainterPath p;
    	p.addRect(x(),y(),rect().width(),rect().height());
    	painterPath.addRect(dialog->geometry());
            QPainterPath drawPath =p.subtracted(painterPath);
    
    	QPainter paint(this);
    	paint.setOpacity(0.7);
    	paint.fillPath(drawPath,QBrush(Qt::black));
    }

     

    4. 切图

    切图只需使用到QPixmap的copy函数即可,函数参数即是窗口的位置及大小。
    	QPixmap pix = scaledPix.copy(pdialog->getShotGeometry());
    	pix.save("C:/Users/dana/Desktop/1.png","png");

    若有下载源码的需要,请戳:http://download.csdn.net/detail/u010511236/9197633

    最终实现效果如下:




    展开全文
  • 有时候我们开发的应用中需要图片剪切功能,比如提供联系人头像选择并剪切上传,或许很多人实现起来会比较繁琐,这里我提取了Android系统自带的剪切功能,和直接通过Intent方式调用系统Camera程序的方式比起来,这个...

    原文:http://www.zhaoweihua.name/android-cropimage-149.html

    有时候我们开发的应用中需要图片剪切功能,比如提供联系人头像选择并剪切上传,或许很多人实现起来会比较繁琐,这里我提取了Android系统自带的剪切功能,和直接通过Intent方式调用系统Camera程序的方式比起来,这个会具有更好的兼容性。先看截图:

    首先还是先说下怎样通过Intent直接调用系统的图片剪切功能,在android1.6及以前的系统中,可以通过以下代码以startActivityForResult方式发送一个特定的Intent,然后在onActivityResult接收返回的图片数据:

     Android 图片剪切

    Intent intent =newIntent("com.android.camera.action.CROP");
    intent.setClassName("com.android.camera","com.android.camera.CropImage");File file =newFile(filePath);Uri uri =Uri.fromFile(file);
    intent.setData(uri);
    intent.putExtra("crop","true");
    intent.putExtra("aspectX",1);
    intent.putExtra("aspectY",1);
    intent.putExtra("outputX",96);
    intent.putExtra("outputY",96);
    intent.putExtra("noFaceDetection",true);
    intent.putExtra("return-data",true);
    startActivityForResult(intent, REQUEST_CROP_ICON);

    在Android1.6系统之后,uri不让传file:///了,只能传图库中的图片:

    Intent intent =newIntent("com.android.camera.action.CROP");
    intent.setData(data.getData());//data是图库选取文件传回的参数
    intent.putExtra("crop","true");
    intent.putExtra("aspectX",1);
    intent.putExtra("aspectY",1);
    intent.putExtra("outputX",96);
    intent.putExtra("outputY",96);
    intent.putExtra("noFaceDetection",true);
    intent.putExtra("return-data",true);
    startActivityForResult(intent, REQUEST_CROP_ICON);

    这两只方式都是通过startActivityForResult方式来获取数据返回的,在onActivityResult中可以通过下面代码来得到返回经过剪切处理的图片数据:

    //先判断是否为RESULT_OK,然后再判断REQUEST_CROP_ICON,代码省略。Bundle extras = data.getExtras();if(extras !=null){Bitmap photo = extras.getParcelable("data");ByteArrayOutputStream stream =newByteArrayOutputStream();
        photo.compress(Bitmap.CompressFormat.JPEG,75, stream);//将流写入文件或者直接使用}

    现在来看看对CropImage提取后的项目结构:

    CropImage demo

    CropImage demo


    整个图片剪切功能的实现代码在crop包下,ImageCropActivity.java为测试应用的启动界面,CropUtil.java为工具类,代码的主要逻辑是先点击按钮,然后从相册选择一张图片,再调用剪切程序进行剪切并获取处理后的数据(也可以将存储卡中的任意图片格式的文件直接传给剪切程序进行处理),这里有几点要注意的:
    1.在AndroidMainfast文件中注册activity :

     

    <activityandroid:name="name.zhaoweihua.crop.CropImage"/><!--注意包名需与你的项目一直-->

    2.添加对应的存储卡读写权限,一般相机拍摄的照片像素都比较高,在图片处理前先对图片大小和质量进行了压缩处理,以避免网络上传中耗费太大流量,以及图片操作内存溢出的可能性,如果不需要,大家可以在代码中去除相关代码。

    <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

    3.另外,注意修改布局文件cropimage.xml中View的路径和项目中包的路径一致:

    <viewclass="name.zhaoweihua.crop.CropImageView"android:id="@+id/image"android:background="#55000000"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_x="0dip"android:layout_y="0dip"/>

    接下来就是代码使用,直接通过文件File来构造Uri然后传给Intent,再startActivityForResult,和Android1.6版调用系统剪切功能类似:

    //调用CropImage类对图片进行剪切Intent intent =newIntent(this, name.zhaoweihua.crop.CropImage.class);Bundle extras =newBundle();
    extras.putString("circleCrop","true");
    extras.putInt("aspectX",200);
    extras.putInt("aspectY",200);//这里的File文件可以是通过系统相册选取的,也可以是位于存储卡中任何一副图片文件
    intent.setDataAndType(Uri.fromFile(f),"image/jpeg");
    intent.putExtras(extras);
    startActivityForResult(intent, PHOTO_CROP_DATA);

    然后从onActivityResult中获取数据,这里就不多说了,大家可以下载项目代码研究。
    测试项目下载CropImage

    转载于:https://www.cnblogs.com/jisheng/archive/2012/08/07/2626271.html

    展开全文
  • 关于CxGrid的图像数据列怎样动态保存Jpg图片源码以及CxImage控件怎样黏贴剪切图片相关源码
  • 我们在使用一些gif图片的时候,经常能遇到图片上下带有黑边的情况,或者碰到有的动图上带有广告水印,碰到这种情况比较简单的处理办法就是gif裁剪(https://www.yasuotu.com/gifcaijian),通过裁剪来去掉不需要的...
  • 怎样在android中添加背景图片

    千次阅读 2015-10-25 22:52:00
    先把图片剪切一下,长宽要适合显示屏幕。一般的图片都是jpg格式的。一定要把格式转化为png格式的。 3.把转化后的图片拖到工程中res中的drawable-hdpi中。图片放到drawable-hdpi文件夹上,文件夹
  • 怎样设置word背景图片每一页都不同

    千次阅读 2011-08-30 11:19:30
    每一页都插入一个“分隔符”和“与上一节相同”: 1、光标置于要插入不同背景的页首:菜单栏——插入...2、在页面插入要成为背景的图片——剪切待用。 3、菜单栏——视图——页眉和页脚——(出现“页眉和页脚”浮动
  • 老朱:“这个不能着急,图片上传涉及的功能比较多,你可以先试着做一个通过input控件上传的功能,做好以后我们在input上传的基础上配合canvas就可以实现图片压缩及剪切后上传了。”“input不是文本框么?它能做上传...
  • 怎样将pdf文件转换成jpg 有时我们会将制作好的PDF文档发布在网上,可又不希望里面里面的文字被任意剪切、复制。这时我们需要将PDF文件转换成JPG格式的图片,然后再转成PDF格式文档。现就PDF如何转为JPG,必须和向你...
  • 如果想要将gif动图中的一部分进行截取该怎么操作呢,不是截取gif图片的某一段,而是剪切图片的部分画面。比如gif动图有边框黑边或者带有广告的水印,在使用的时候非常的不便,该怎么处理呢?接下来教大家gif在线编辑...
  • windows窗体上点击按钮A 则复制预先设置好的文本到剪切板。 例如我点一下按钮,就把某手机号1391234####复制到剪切板。...[图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/83.gif)
  • 用cropbox.js上传头像到服务器,页面上显示头像是剪切后的图片,到服务器上就是完整的图片了,为什么? 怎样才能上传剪切后的图片到服务器,最好后台不用操作,可以不
  • 目的是根据显著性制作图片的缩略图。已经得出了显著性图片,如下,怎样将图中的显著性区域所在的某个矩形剪切出来呢? ![](http://ozaa2qblp.bkt.clouddn.com/18-4-10/87063707.jpg)
  • Snipaste:很强大的一款剪切图片的神器 小番茄:用于工作备忘录,非常好用 我们在电脑中下载的很多应用程序都会自动进行开机自启动,但是有的程序并不会自动设置,接下来小编就教大家怎样开启开机启动。 具体如下...
  • PHOTOSHOP怎样将矩形选区的直角改为圆角用什么方法将那个矩形选区的4个直角改为有一定的弧度,麻烦指点一下我忘材料/工具:ps6ps怎么剪裁成圆角圆角矩形ps...如何在PS中把正方形的图片剪切为圆角正方形如何photosh...
  • 不管怎样,一般情况下,我们不能通过构造方法直接新建一个Bitmap对象。 Bitmap是Android系统中的图像处理中最重要类之一。Bitmap可以获取图像文件信息,对图像进行剪切、旋转、缩放,压缩等操作,并可以以指定格式...
  • C# winform典型系统开发模板

    热门讨论 2011-09-17 15:13:21
     4.2.4 怎样操作RichtextBox控件的选择文本 82  4.2.5 如何获取数据表中字段的描述信息 83  4.3 设计过程 83  4.3.1 获取数据表中字段的中文信息 84  4.3.2 添加数据表的查询条件 86  4.3.3 ...
  • java自学之道

    2014-01-05 20:17:04
    5.34 怎样翻转图片 5.35 开发自己的闹钟 5.36 应用自己的万年历 5.37 开发自己的计算器 5.38 开发自己的电子相册 第6章 Java游戏 6.1 俄罗斯方块 6.2 连连看游戏 6.3 迷宫 6.4 模拟闪电 6.5 扫雷 6.6 贪食蛇 6.7 ...
  • 如何与资源管理器互动剪切、拷贝、粘贴文件.txt 深入理解C#编程中的组件-事件-委托.txt 生成透明的GIF图片 .txt 生成压缩图片时的2种方法.txt 使用C#返回系统特殊路径.txt 使用VisualC#.NET检查Windows版本....
  • 如何与资源管理器互动剪切、拷贝、粘贴文件.txt 深入理解C#编程中的组件-事件-委托.txt 生成透明的GIF图片 .txt 生成压缩图片时的2种方法.txt 使用C#返回系统特殊路径.txt 使用VisualC#.NET检查Windows版本....
  • 4.2.4 怎样操作RichtextBox控件的选择文本 4.2.5 如何获取数据表中字段的描述信息 4.3 设计过程 4.3.1 获取数据表中字段的中文信息 4.3.2 添加数据表的查询条件 4.3.3 向SQL语句中添加括号 4.3.4 查询生成后的SQL...
  • 4.2.4 怎样操作RichtextBox控件的选择文本 4.2.5 如何获取数据表中字段的描述信息 4.3 设计过程 4.3.1 获取数据表中字段的中文信息 4.3.2 添加数据表的查询条件 4.3.3 向SQL语句中添加括号 4.3.4 查询生成后的SQL...
  • 4.2.4 怎样操作RichtextBox控件的选择文本 4.2.5 如何获取数据表中字段的描述信息 4.3 设计过程 4.3.1 获取数据表中字段的中文信息 4.3.2 添加数据表的查询条件 4.3.3 向SQL语句中添加括号 4.3.4 查询生成后的SQL...
  • C#开发典型模块大全

    2014-03-12 18:11:22
    4.2.4 怎样操作RichtextBox控件的选择文本 82 4.2.5 如何获取数据表中字段的描述信息 83 4.3 设计过程 83 4.3.1 获取数据表中字段的中文信息 84 4.3.2 添加数据表的查询条件 86 4.3.3 向SQL语句中添加...
  • C#.net_经典编程例子400个

    热门讨论 2013-05-17 09:25:30
    173 4.3 图像预览 175 实例119 局部图像放大 175 实例120 浏览大图片 177 实例121 剪切图片 178 实例122 图像旋转 181 实例123 鼠标拖拽图像 182 4.4 图形缩放与变换 183 ...
  • GUI Design Studio 3.0

    2009-02-10 11:54:51
    当您需要绘制一款应用程序的外观或显示怎样将程序的各个部分连接起来时,您就可以使用GUI Design Studio来实现,如: 将产品创意文档化 制作项目提案 需求记录 创建屏幕图样 为开发人员制作详细的规格 为现有...
  • 实例121 剪切图片 178 实例122 图像旋转 181 实例123 鼠标拖拽图像 182 4.4 图形缩放与变换 183 实例124 如何放大和缩小图像 183 实例125 如何旋转JPG图像 184 实例126 如何实现图形翻转 185 4.5 ...

空空如也

空空如也

1 2 3
收藏数 59
精华内容 23
关键字:

怎样剪切图片