#include "imgprocessor.h"
ImgProcessor::ImgProcessor() : QMainWindow()
{
setWindowTitle(tr("Image Processor"));
imageLabel = new QLabel(this);
imageLabel->setSizePolicy(QSizePolicy::Ignored,QSizePolicy::Ignored);
imageLabel->setScaledContents(true);
setCentralWidget(imageLabel);
createActions();
createMenus();
createToolBars();
}
void ImgProcessor::createActions()
{
openFileAction = new QAction(QIcon(":/images/openfile.png"),tr("Open"),this);
openFileAction->setShortcut(tr("Ctrl+O"));
openFileAction->setStatusTip(tr("Open File"));
connect(openFileAction,SIGNAL(triggered()),this,SLOT(slotOpenFile()));
// zoom in action
zoomInAction = new QAction(QIcon(":/images/zoomin.png"),tr("ZoomIn"),this);
zoomInAction->setShortcut(tr("PgUp"));
zoomInAction->setStatusTip(tr("Zoom In"));
connect(zoomInAction,SIGNAL(triggered()),this,SLOT(slotZoomIn()));
// zoom out action
zoomOutAction = new QAction(QIcon(":/images/zoomout.png"),tr("ZoomOut"),this);
zoomOutAction->setShortcut(tr("PgDown"));
zoomOutAction->setStatusTip(tr("Zoom Out"));
connect(zoomOutAction,SIGNAL(triggered()),this,SLOT(slotZoomOut()));
// rotate 90 action
rotate90Action = new QAction(QIcon(":/images/rotate90.png"),tr("Rotate90"), this);
rotate90Action->setShortcut(tr("Ctrl+Right"));
rotate90Action->setStatusTip(tr("Rotate 90"));
connect(rotate90Action, SIGNAL(triggered()), this, SLOT(slotRotate90()));
// rotate 180 action
rotate180Action = new QAction(QIcon(":/images/rotate180.png"),tr("Rotate180"), this);
rotate180Action->setShortcut(tr("Ctrl+Down"));
rotate180Action->setStatusTip(tr("Rotate 180"));
connect(rotate180Action, SIGNAL(triggered()), this, SLOT(slotRotate180()));
// rotate 270 action
rotate270Action = new QAction(QIcon(":/images/rotate270.png"),tr("Rotate270"), this);
rotate270Action->setShortcut(tr("Ctrl+Left"));
rotate270Action->setStatusTip(tr("Rotate 270"));
connect(rotate270Action, SIGNAL(triggered()), this, SLOT(slotRotate270()));
// mirror vertical action
mirrorVerticalAction = new QAction(QIcon(":/images/mirrorvertical.png"),tr("MirrorVertical"), this);
mirrorVerticalAction->setShortcut(tr("Ctrl+V"));
mirrorVerticalAction->setStatusTip(tr("Mirror Vertical"));
connect(mirrorVerticalAction, SIGNAL(triggered()), this, SLOT(slotMirrorVertical()));
// mirror horizontal action
mirrorHorizontalAction = new QAction(QIcon(":/images/mirrorhorizontal.png"),tr("MirrorHorizontal"), this);
mirrorHorizontalAction->setShortcut(tr("Ctrl+H"));
mirrorHorizontalAction->setStatusTip(tr("Mirror Horizontal"));
connect(mirrorHorizontalAction, SIGNAL(triggered()), this, SLOT(slotMirrorHorizontal()));
}
void ImgProcessor::createMenus()
{
fileMenu = menuBar()->addMenu(tr("File"));
zoomMenu = menuBar()->addMenu(tr("zoom"));
rotateMenu = menuBar()->addMenu(tr("rotate"));
mirrorMenu = menuBar()->addMenu(tr("mirror"));
fileMenu->addAction(openFileAction);
zoomMenu->addAction(zoomInAction);
zoomMenu->addAction(zoomOutAction);
rotateMenu->addAction(rotate90Action);
rotateMenu->addAction(rotate180Action);
rotateMenu->addAction(rotate270Action);
mirrorMenu->addAction(mirrorVerticalAction);
mirrorMenu->addAction(mirrorHorizontalAction);
}
void ImgProcessor::createToolBars()
{
fileTool = addToolBar("File");
zoomTool = addToolBar("Zoom");
rotateTool = addToolBar("Rotate");
mirrorTool = addToolBar("Mirror");
fileTool->addAction(openFileAction);
zoomTool->addAction(zoomInAction);
zoomTool->addAction(zoomOutAction);
rotateTool->addAction(rotate90Action);
rotateTool->addAction(rotate180Action);
rotateTool->addAction(rotate270Action);
mirrorTool->addAction(mirrorVerticalAction);
mirrorTool->addAction(mirrorHorizontalAction);
}
void ImgProcessor::slotOpenFile()
{
QString s = QFileDialog::getOpenFileName(this,
"open image file",
".",
"Image files (*.bmp *.jpg *.pbm *.pgm *.png *.ppm *.xbm *.xpm);;All files (*.*))");
if(s != "")
{
if(img.load(s))
{
imageLabel->setPixmap(QPixmap::fromImage(img));
resize(img.width(),img.height());
}
}
}
void ImgProcessor::slotZoomIn()
{
if(img.isNull())
{
return;
}
else
{
QMatrix matrix;
matrix.scale(2,2);
img = img.transformed(matrix);
imageLabel->setPixmap(QPixmap::fromImage(img));
resize(img.width(),img.height());
}
}
void ImgProcessor::slotZoomOut()
{
if(img.isNull())
{
return;
}
QMatrix matrix;
matrix.scale(0.5,0.5);
img = img.transformed(matrix);
imageLabel->setPixmap(QPixmap::fromImage(img));
resize(img.width(),img.height());
}
void ImgProcessor::slotRotate90 ()
{
if(img.isNull())
{
return;
}
QMatrix matrix;
matrix.rotate(90);
img = img.transformed(matrix);
imageLabel->setPixmap(QPixmap::fromImage(img));
resize(img.width(),img.height());
}
void ImgProcessor::slotRotate180 ()
{
if(img.isNull())
{
return;
}
QMatrix matrix;
matrix.rotate(180);
img = img.transformed(matrix);
imageLabel->setPixmap(QPixmap::fromImage(img));
resize(img.width(),img.height());
}
void ImgProcessor::slotRotate270 ()
{
if(img.isNull())
{
return;
}
QMatrix matrix;
matrix.rotate(270);
img = img.transformed(matrix);
imageLabel->setPixmap(QPixmap::fromImage(img));
resize(img.width(),img.height());
}
void ImgProcessor::slotMirrorVertical ()
{
if(img.isNull())
{
return;
}
img = img.mirrored(false,true);
imageLabel->setPixmap(QPixmap::fromImage(img));
resize(img.width(),img.height());
}
void ImgProcessor::slotMirrorHorizontal ()
{
if(img.isNull())
{
return;
}
img = img.mirrored(true,false);
imageLabel->setPixmap(QPixmap::fromImage(img));
resize(img.width(),img.height());
}
图片缩放与旋转的资源代码
5星 · 超过95%的资源 需积分: 10 173 浏览量
2015-08-18
11:26:33
上传
评论 1
收藏 37KB 7Z 举报
onlyshi
- 粉丝: 197
- 资源: 35
最新资源
- 细胞的奇迹:吃出来的免疫力(美亚畅销书!作者的TED演讲播放量超300万次!《谷物大脑》作者、《三联生活周刊》推荐!吃下对的食物,改善你的... (Z-Library).azw3
- 智能手机产品拆解,使用mindmaster打开
- 11111111111111
- 统信系统ARM64依赖openssl-1.0.2版本的libssl.so.10和libcrypto.so.10文件
- 奥比中光python sdk
- 冯超楠17.py
- OCR识别-基于视觉注意力机制Attention实现的OCR识别算法-附项目源码-优质项目实战.zip
- Java 使用蒙特卡洛方法估算PI的近似值(源代码)
- main.cpp
- 电子木鱼小程序源码电子木鱼小程序源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈