diff --git a/ImportDialog.cpp b/ImportDialog.cpp
new file mode 100644
index 0000000..e8d2ac6
--- /dev/null
+++ b/ImportDialog.cpp
@@ -0,0 +1,164 @@
+/*****************************************************************************
+* gta5sync GRAND THEFT AUTO V SYNC
+* Copyright (C) 2017 Syping
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*****************************************************************************/
+
+#include "ImportDialog.h"
+#include "ui_ImportDialog.h"
+#include <QPainter>
+#include <QPixmap>
+#include <QImage>
+#include <QDebug>
+
+ImportDialog::ImportDialog(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::ImportDialog)
+{
+    ui->setupUi(this);
+    doImport = false;
+    avatarAreaImage = QImage(":/img/avatarareaimport.png");
+
+    if (QIcon::hasThemeIcon("dialog-ok"))
+    {
+        ui->cmdOK->setIcon(QIcon::fromTheme("dialog-ok"));
+    }
+    if (QIcon::hasThemeIcon("dialog-cancel"))
+    {
+        ui->cmdCancel->setIcon(QIcon::fromTheme("dialog-cancel"));
+    }
+
+    ui->rbKeep->setChecked(true);
+}
+
+ImportDialog::~ImportDialog()
+{
+    delete ui;
+}
+
+void ImportDialog::processImage()
+{
+    QImage snapmaticImage = workImage;
+    QPixmap snapmaticPixmap(960, 536);
+    snapmaticPixmap.fill(Qt::black);
+    QPainter snapmaticPainter(&snapmaticPixmap);
+    if (ui->cbAvatar->isChecked())
+    {
+        // Avatar mode
+        int diffWidth = 0;
+        int diffHeight = 0;
+        if (ui->rbKeep->isChecked())
+        {
+            snapmaticImage = snapmaticImage.scaled(470, 470, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+            if (snapmaticImage.width() > snapmaticImage.height())
+            {
+                diffHeight = 470 - snapmaticImage.height();
+                diffHeight = diffHeight / 2;
+            }
+            else if (snapmaticImage.width() < snapmaticImage.height())
+            {
+                diffWidth = 470 - snapmaticImage.width();
+                diffWidth = diffWidth / 2;
+            }
+        }
+        else
+        {
+            snapmaticImage = snapmaticImage.scaled(470, 470, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+        }
+        snapmaticPainter.drawImage(0, 0, avatarAreaImage);
+        snapmaticPainter.drawImage(145 + diffWidth, 66 + diffHeight, snapmaticImage);
+        imageTitle = "Custom Avatar";
+    }
+    else
+    {
+        // Picture mode
+        int diffWidth = 0;
+        int diffHeight = 0;
+        if (ui->rbKeep->isChecked())
+        {
+            snapmaticImage = snapmaticImage.scaled(960, 536, Qt::KeepAspectRatio, Qt::SmoothTransformation);
+            if (snapmaticImage.width() != 960)
+            {
+                diffWidth = 960 - snapmaticImage.width();
+                diffWidth = diffWidth / 2;
+            }
+            else if (snapmaticImage.height() != 536)
+            {
+                diffHeight = 536 - snapmaticImage.height();
+                diffHeight = diffHeight / 2;
+            }
+        }
+        else
+        {
+            snapmaticImage = snapmaticImage.scaled(960, 536, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+        }
+        snapmaticPainter.drawImage(0 + diffWidth, 0 + diffHeight, snapmaticImage);
+        imageTitle = "Custom Picture";
+    }
+    snapmaticPainter.end();
+    newImage = snapmaticPixmap.toImage();
+    ui->labPicture->setPixmap(snapmaticPixmap.scaled(430, 240, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
+}
+
+QImage ImportDialog::image()
+{
+    return newImage;
+}
+
+void ImportDialog::setImage(const QImage &image_)
+{
+    workImage = image_;
+    if (workImage.width() == workImage.height())
+    {
+        ui->cbAvatar->setChecked(true);
+    }
+    processImage();
+}
+
+bool ImportDialog::isDoImport()
+{
+    return doImport;
+}
+
+QString ImportDialog::getImageTitle()
+{
+    return imageTitle;
+}
+
+void ImportDialog::on_rbIgnore_clicked()
+{
+    processImage();
+}
+
+void ImportDialog::on_rbKeep_clicked()
+{
+    processImage();
+}
+
+void ImportDialog::on_cbAvatar_clicked()
+{
+    processImage();
+}
+
+void ImportDialog::on_cmdCancel_clicked()
+{
+    close();
+}
+
+void ImportDialog::on_cmdOK_clicked()
+{
+    doImport = true;
+    close();
+}
diff --git a/ImportDialog.h b/ImportDialog.h
new file mode 100644
index 0000000..ae4b72b
--- /dev/null
+++ b/ImportDialog.h
@@ -0,0 +1,57 @@
+/*****************************************************************************
+* gta5sync GRAND THEFT AUTO V SYNC
+* Copyright (C) 2017 Syping
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*****************************************************************************/
+
+#ifndef IMPORTDIALOG_H
+#define IMPORTDIALOG_H
+
+#include <QDialog>
+
+namespace Ui {
+class ImportDialog;
+}
+
+class ImportDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit ImportDialog(QWidget *parent = 0);
+    ~ImportDialog();
+    QImage image();
+    QString getImageTitle();
+    void setImage(const QImage &image);
+    bool isDoImport();
+
+private slots:
+    void processImage();
+    void on_rbIgnore_clicked();
+    void on_rbKeep_clicked();
+    void on_cbAvatar_clicked();
+    void on_cmdCancel_clicked();
+    void on_cmdOK_clicked();
+
+private:
+    Ui::ImportDialog *ui;
+    QImage avatarAreaImage;
+    QString imageTitle;
+    QImage workImage;
+    QImage newImage;
+    bool doImport;
+};
+
+#endif // IMPORTDIALOG_H
diff --git a/ImportDialog.ui b/ImportDialog.ui
new file mode 100644
index 0000000..231c71a
--- /dev/null
+++ b/ImportDialog.ui
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ImportDialog</class>
+ <widget class="QDialog" name="ImportDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>430</width>
+    <height>380</height>
+   </rect>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>430</width>
+    <height>380</height>
+   </size>
+  </property>
+  <property name="maximumSize">
+   <size>
+    <width>430</width>
+    <height>380</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Import...</string>
+  </property>
+  <property name="modal">
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout" name="vlImport">
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QLabel" name="labPicture">
+     <property name="minimumSize">
+      <size>
+       <width>430</width>
+       <height>240</height>
+      </size>
+     </property>
+     <property name="text">
+      <string/>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QFrame" name="buttomFrame">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="frameShape">
+      <enum>QFrame::NoFrame</enum>
+     </property>
+     <property name="frameShadow">
+      <enum>QFrame::Plain</enum>
+     </property>
+     <property name="lineWidth">
+      <number>0</number>
+     </property>
+     <layout class="QVBoxLayout" name="vlButtom">
+      <property name="leftMargin">
+       <number>9</number>
+      </property>
+      <property name="topMargin">
+       <number>6</number>
+      </property>
+      <property name="rightMargin">
+       <number>9</number>
+      </property>
+      <property name="bottomMargin">
+       <number>9</number>
+      </property>
+      <item>
+       <widget class="QGroupBox" name="gbSettings">
+        <property name="title">
+         <string>Settings</string>
+        </property>
+        <layout class="QGridLayout" name="gdSettings">
+         <item row="1" column="0">
+          <widget class="QRadioButton" name="rbKeep">
+           <property name="text">
+            <string>&amp;Keep Aspect Ratio</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="QRadioButton" name="rbIgnore">
+           <property name="text">
+            <string>&amp;Ignore Aspect Ratio</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="0">
+          <widget class="QCheckBox" name="cbAvatar">
+           <property name="text">
+            <string>&amp;Avatar</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item>
+       <spacer name="vsDialog">
+        <property name="orientation">
+         <enum>Qt::Vertical</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>0</width>
+          <height>0</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <layout class="QHBoxLayout" name="hlButtons">
+        <item>
+         <spacer name="hsButtons">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>0</width>
+            <height>0</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <widget class="QPushButton" name="cmdOK">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="text">
+           <string>&amp;OK</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="cmdCancel">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="text">
+           <string>&amp;Cancel</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>