From 7dc42eb468f6beb5df815fdd983393db556e2de0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20Ozan=20=C3=87etin?= <53947781+mozancetin@users.noreply.github.com> Date: Thu, 18 Mar 2021 10:37:37 +0300 Subject: [PATCH 1/4] Added new program --- Image-to-ASCII-Art/README.md | 12 +++++ Image-to-ASCII-Art/drawASCIIart.py | 73 +++++++++++++++++++++++++++++ Image-to-ASCII-Art/program.pyw | 72 ++++++++++++++++++++++++++++ Image-to-ASCII-Art/test.png | Bin 0 -> 29980 bytes Image-to-ASCII-Art/test.txt | 50 ++++++++++++++++++++ 5 files changed, 207 insertions(+) create mode 100644 Image-to-ASCII-Art/README.md create mode 100644 Image-to-ASCII-Art/drawASCIIart.py create mode 100644 Image-to-ASCII-Art/program.pyw create mode 100644 Image-to-ASCII-Art/test.png create mode 100644 Image-to-ASCII-Art/test.txt diff --git a/Image-to-ASCII-Art/README.md b/Image-to-ASCII-Art/README.md new file mode 100644 index 0000000..7acc9fe --- /dev/null +++ b/Image-to-ASCII-Art/README.md @@ -0,0 +1,12 @@ +# Image-to-ASCII-Art +The title is self-explanatory. + +# Requirements +- Pillow Module for Python3 +- PyQt5 and PyQt-tools for Python3 +- `pip install pillow` +- `pip install pyqt5` +- `pip install pyqt5-tools` + +# File to Run +- program.pyw diff --git a/Image-to-ASCII-Art/drawASCIIart.py b/Image-to-ASCII-Art/drawASCIIart.py new file mode 100644 index 0000000..48eebad --- /dev/null +++ b/Image-to-ASCII-Art/drawASCIIart.py @@ -0,0 +1,73 @@ +import PIL.Image + +SIZE = 100 +WIDTHRATIO = 0.6 +path = None +SAVE_NAME = "ascii_image.txt" + +# ASCII chars used to build the output text +ASCII_CHARS = ["@", "#", "S", "%", "?", "*", "+", ";", ":", ",", "."] + +# resize image +def resize_image(image, new_width=SIZE): + width, height = image.size + ratio = height / width + new_height = int(new_width * ratio * WIDTHRATIO) + resized_image = image.resize((new_width, new_height)) + return(resized_image) + +# convert grayscale +def grayify(image): + grayscale_image = image.convert("L") + return(grayscale_image) + +# pixels to ASCII chars +def pixels_to_ascii(image): + pixels = image.getdata() + characters = "".join([ASCII_CHARS[pixel//25] for pixel in pixels]) + return(characters) + +def setSize(size_multi : int): + if size_multi < 50: + size_multi = 50 + + elif size_multi > 1000: + size_multi = 1000 + + return(size_multi) + +def setWidth(ratio_multi : float): + if ratio_multi < 0.2: + ratio_multi = 0.2 + + elif ratio_multi > 1: + ratio_multi = 1 + + return(ratio_multi) + +def main(new_width = None, WIDTHRAT = None): + if WIDTHRAT != None: + WIDTHRATIO = WIDTHRAT + if new_width != None: + SIZE = new_width + else: + new_width = SIZE + + try: + image = PIL.Image.open(path) + except: + print(path, "is not a valid pathname to an image.") + + # image to ascii + new_image_data = pixels_to_ascii(grayify(resize_image(image, new_width))) + + # format + pixel_count = len(new_image_data) + ascii_image = "\n".join(new_image_data[i:(i+new_width)] for i in range(0, pixel_count, new_width)) + + # print + #print(ascii_image) + + # save results + with open(SAVE_NAME, "w") as f: + f.write(ascii_image) diff --git a/Image-to-ASCII-Art/program.pyw b/Image-to-ASCII-Art/program.pyw new file mode 100644 index 0000000..4eb463a --- /dev/null +++ b/Image-to-ASCII-Art/program.pyw @@ -0,0 +1,72 @@ +import sys +import os +import drawASCIIart +from PyQt5.QtWidgets import QWidget, QApplication, QLineEdit, QLabel, QPushButton,QVBoxLayout, QFileDialog, QHBoxLayout + +class ASCIIArt(QWidget): + + def __init__(self): + + super().__init__() + self.init_ui() + + def init_ui(self): + + self.ratioString = QLabel("Ratio (0.2 - 1.0)") + self.ratio = QLineEdit() + self.nameString = QLabel("Name") + self.name = QLineEdit() + self.ratio.setText(str(drawASCIIart.WIDTHRATIO)) + self.sizeString = QLabel("Size (50 - 1000)") + self.size = QLineEdit() + self.size.setText(str(drawASCIIart.SIZE)) + self.filePath = QLabel("") + self.button = QPushButton("Add Photo") + self.startButton = QPushButton("Start") + self.startButton.setEnabled(False) + + v_box = QVBoxLayout() + v_box.addStretch() + v_box.addWidget(self.nameString) + v_box.addWidget(self.name) + v_box.addWidget(self.sizeString) + v_box.addWidget(self.size) + v_box.addWidget(self.ratioString) + v_box.addWidget(self.ratio) + v_box.addWidget(self.filePath) + v_box.addWidget(self.button) + v_box.addWidget(self.startButton) + v_box.addStretch() + + self.setLayout(v_box) + self.setWindowTitle("ASCII Art") + + self.button.clicked.connect(self.open_dir) + self.startButton.clicked.connect(self.Start) + self.setMinimumHeight(250) + self.setMaximumHeight(250) + self.setMinimumWidth(300) + self.setMaximumWidth(300) + + self.show() + + def open_dir(self): + + file_path = QFileDialog.getOpenFileName(self, "Select an Image", os.getenv("DESKTOP"),"Images (*.png *.jpg)") + drawASCIIart.path = file_path[0] + self.filePath.setText(file_path[0]) + self.startButton.setEnabled(True) + + def Start(self): + if self.name.text() != "": + drawASCIIart.SAVE_NAME = self.name.text() + ".txt" + else: + self.filePath.setText("Name field cannot be left blank!") + return False + self.filePath.setText("Wait, please.") + drawASCIIart.main(drawASCIIart.setSize(int(self.size.text())), drawASCIIart.setWidth(float(self.ratio.text()))) + self.filePath.setText("Done!") + +app = QApplication(sys.argv) +menu = ASCIIArt() +sys.exit(app.exec_()) diff --git a/Image-to-ASCII-Art/test.png b/Image-to-ASCII-Art/test.png new file mode 100644 index 0000000000000000000000000000000000000000..cac4b8ed45d94f9de6e6602f5ee479a38ad3d152 GIT binary patch literal 29980 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 Af&c&j literal 0 HcmV?d00001 diff --git a/Image-to-ASCII-Art/test.txt b/Image-to-ASCII-Art/test.txt new file mode 100644 index 0000000..019f736 --- /dev/null +++ b/Image-to-ASCII-Art/test.txt @@ -0,0 +1,50 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%@@@@@@@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%%%@%%%%%%%%%%%%%%%%%@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@%%%%@@@@@%%%%%%%%%%%%%%%@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@%%%@@@@%%%%@@@@@%%%%@@@@@%%%%%%@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%%%%%%%%%%@@@%%%%%@@@@@%%%%%%@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%@@@@@%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%%%%%%%%%@@@@@%@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@%%%@@@@@%%%%@@@@@%%@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@@@@@@%%%@@@@@%@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@%%%@@@@@%%%%@@@@@%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@@@@@@%%%@@@@@%%%%@@@@@%%%%%%@@@@@@@@@@@@@@@@%%%@@@@@%%%%@@@@@%%@@@@@%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%@@@@@@@@%%%@@@@@%%%%@@@@@%%%%%%@@@@@%%%%%%@@@@@%%%@@@@@%%%%@@@@@%%@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%%%@@@@@%%%@@@@@%%%%@@@@@%%%%%%@@@@@%%%%%%@@@@@%%%@@@@@%%%%@@@@@%%@@@@@%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%%%@@@@@%%%@@@@@%%%%@@@@@%%%%%%@@@@@%%%%%%@@@@@%%%@@@@@%%%%@@@@@%%@@@@@%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%@@@@@%%%%@@@@@%%%%%%@@@@@%%%%%%@@@@@%%%@@@@@%%%%@@@@@%%@@@@@@%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%@@@@@%%%%@@@@@@@@@%%@@@@@%%%%%%@@@@@%%%@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@%%%%@@@@@%%%%%%@@@@@@@%%@@@@@%%%%%%@@@@@%%%%@@@@@@@@@%@@@%%@@@@%@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ No newline at end of file From a41555e8e313d2002a1c409049471034353cc213 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20Ozan=20=C3=87etin?= <53947781+mozancetin@users.noreply.github.com> Date: Thu, 18 Mar 2021 10:39:14 +0300 Subject: [PATCH 2/4] Update README.md --- Image-to-ASCII-Art/README.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Image-to-ASCII-Art/README.md b/Image-to-ASCII-Art/README.md index 7acc9fe..9f1d545 100644 --- a/Image-to-ASCII-Art/README.md +++ b/Image-to-ASCII-Art/README.md @@ -4,9 +4,15 @@ The title is self-explanatory. # Requirements - Pillow Module for Python3 - PyQt5 and PyQt-tools for Python3 -- `pip install pillow` -- `pip install pyqt5` -- `pip install pyqt5-tools` + +``` +pip install pillow +pip install pyqt5 +pip install pyqt5-tools +``` # File to Run - program.pyw + +# Test +See test.txt file From b55b56f652157c57a8b63f7b4cb231b75f2b2902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20Ozan=20=C3=87etin?= <53947781+mozancetin@users.noreply.github.com> Date: Thu, 18 Mar 2021 10:41:47 +0300 Subject: [PATCH 3/4] Add files via upload --- Image-to-ASCII-Art/program.png | Bin 0 -> 5485 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Image-to-ASCII-Art/program.png diff --git a/Image-to-ASCII-Art/program.png b/Image-to-ASCII-Art/program.png new file mode 100644 index 0000000000000000000000000000000000000000..7ef81e452dabc1bafccf6ec0aeb2f73646c1ea51 GIT binary patch literal 5485 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 literal 0 HcmV?d00001 From 91c94dc7852a9f8b71260af535ce0cea429f6a2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20Ozan=20=C3=87etin?= <53947781+mozancetin@users.noreply.github.com> Date: Thu, 18 Mar 2021 10:54:41 +0300 Subject: [PATCH 4/4] Update README.md --- Image-to-ASCII-Art/README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Image-to-ASCII-Art/README.md b/Image-to-ASCII-Art/README.md index 9f1d545..b8b8e24 100644 --- a/Image-to-ASCII-Art/README.md +++ b/Image-to-ASCII-Art/README.md @@ -16,3 +16,18 @@ pip install pyqt5-tools # Test See test.txt file + +# Program +![](program.png) + +# A Little Explanation +- Size: Bigger is better. The larger it is, the larger the image in the text file. Resolution also increases. +- Ratio: Smaller is better. This value is for the vertical length of the picture to be created not to be longer than normal. + +# Best Settings +`Size: 1000 Ratio: 0.2` + +`Size: 150 Ratio: 0.3` + +# Important Note +The larger the size part, the larger the picture, and probably only a small part of the picture will be visible in the text file when it exceeds a certain value. ***Zoom out in your text editor to see the whole picture.***