CoolFace
Datasetpublic

ysn-rfd/text-dataset-tiny-code-script-py-format

USED of tahamajs/medicine_ds_persian for .parquet file USED of Alijafarixcs2/persian-it-llama2-2k for .parquet file USED of Abirate/english_quotes for .jsonl file NEW FILES (05/12/2025) NEW FILES (12/26/2025) NEW FILES (02/15/2026)

sourceHugging Faceapache-2.0updated 4mo agoView on Hugging Face
3likes1.6kdownloads
cert9.py232 linesDownload Raw Back to cert
1from PIL import Image, ImageDraw, ImageFont, ImageFilter, ImageEnhance
2import qrcode
3import hashlib
4import random
5import math
6import os
7
8# ======== تنظیمات قابل تغییر ========
9CERT_WIDTH, CERT_HEIGHT = 900, 550
10MARGIN = 30
11BACKGROUND_COLOR = (255, 255, 250)
12BORDER_COLOR = (60, 60, 60)
13TITLE_COLOR = (20, 20, 20)
14TEXT_COLOR = (40, 40, 40)
15WATERMARK_COLOR = (60, 60, 60, 25)  # با آلفای کم
16NOISE_INTENSITY = 1200  # تعداد پیکسل نویز
17
18# ======== اطلاعات گواهی ========
19cert_info = {
20    "Name": "Yasin",
21    "User ID": "YSNRFD",
22    "Membership Date": "April 1, 2023",
23    "Issued Date": "June 28, 2025",
24    "Certificate ID": "OPENAI-YSN-APR2023-CERT1001",
25    "Signed By": "ChatGPT-4o",
26    "Model ID": "GPT4O-REP-TRUST-2025",
27    "Issuer": "OpenAI, Inc."
28}
29
30# ======== تابع بارگذاری فونت پویا با fallback ========
31def load_font(name, size):
32    paths = [
33        name,
34        os.path.join("/usr/share/fonts/truetype/dejavu/", name),
35        os.path.join("/Library/Fonts/", name),
36        os.path.join("C:/Windows/Fonts/", name)
37    ]
38    for path in paths:
39        try:
40            return ImageFont.truetype(path, size)
41        except:
42            continue
43    # فونت پیش‌فرض PIL
44    return ImageFont.load_default()
45
46# فونت‌ها
47font_title = load_font("arialbd.ttf", 36)
48font_header = load_font("arialbd.ttf", 20)
49font_text = load_font("arial.ttf", 18)
50font_small = load_font("arial.ttf", 14)
51
52# ======== تولید رشته داده برای امضا دیجیتال ========
53data_string = "\n".join(f"{k}: {v}" for k, v in cert_info.items())
54digital_signature = hashlib.sha256(data_string.encode('utf-8')).hexdigest()
55verification_code = f"VER-{digital_signature[:8].upper()}-{cert_info['Certificate ID'][-4:]}"
56
57# ======== ایجاد QR code به صورت با کیفیت و رنگ سفارشی ========
58def create_qr_code(data, size=180):
59    qr = qrcode.QRCode(box_size=8, border=3)
60    qr.add_data(data)
61    qr.make(fit=True)
62    qr_img = qr.make_image(fill_color="#003366", back_color="white").convert("RGBA")
63    qr_img = qr_img.resize((size, size), Image.Resampling.LANCZOS)
64    return qr_img
65
66qr_img = create_qr_code(digital_signature, size=180)
67
68# ======== طراحی پس‌زمینه با گرادیانت ملایم ========
69def draw_gradient(draw, width, height, start_color, end_color):
70    for i in range(height):
71        r = int(start_color[0] + (float(i) / height) * (end_color[0] - start_color[0]))
72        g = int(start_color[1] + (float(i) / height) * (end_color[1] - start_color[1]))
73        b = int(start_color[2] + (float(i) / height) * (end_color[2] - start_color[2]))
74        draw.line([(0, i), (width, i)], fill=(r, g, b))
75
76# ======== رسم مهر رسمی با افکت سه‌بعدی ========
77def create_official_seal(diameter=160):
78    seal = Image.new("RGBA", (diameter, diameter), (0, 0, 0, 0))
79    draw = ImageDraw.Draw(seal)
80    center = diameter // 2
81
82    # حلقه بیرونی با گرادیانت شعاعی
83    for i in range(8):
84        alpha = int(255 * (1 - i/8))
85        radius = center - i*6
86        draw.ellipse(
87            [(center - radius, center - radius), (center + radius, center + radius)],
88            outline=(0, 51, 102, alpha),
89            width=3
90        )
91
92    # خطوط شعاعی تزئینی
93    num_rays = 28
94    outer_r = center - 15
95    inner_r = center - 45
96    for i in range(num_rays):
97        angle = 360 / num_rays * i
98        x1 = center + int(inner_r * math.cos(math.radians(angle)))
99        y1 = center + int(inner_r * math.sin(math.radians(angle)))
100        x2 = center + int(outer_r * math.cos(math.radians(angle)))
101        y2 = center + int(outer_r * math.sin(math.radians(angle)))
102        draw.line([(x1, y1), (x2, y2)], fill=(0, 51, 102, 180), width=2)
103
104    # قرار دادن لوگوی openai_seal.png در وسط مهر
105    try:
106        logo = Image.open("openai_seal.png").convert("RGBA")
107        max_logo_size = diameter - 90  # حدود 70x70 یا کمی بزرگ‌تر
108        logo.thumbnail((max_logo_size, max_logo_size), Image.Resampling.LANCZOS)
109        logo_pos = (center - logo.width // 2, center - logo.height // 2)
110        seal.paste(logo, logo_pos, logo)
111    except FileNotFoundError:
112        print("⚠️ فایل openai_seal.png پیدا نشد! مهر بدون لوگو ساخته شد.")
113
114    # متن مهر دایره‌ای
115    seal_text = "OFFICIAL OPENAI SEAL"
116    font_circle = load_font("arialbd.ttf", 16)
117    radius_text = center - 12
118
119    for i, char in enumerate(seal_text):
120        angle_deg = (360 / len(seal_text)) * i - 90
121        angle_rad = math.radians(angle_deg)
122        x = center + int(radius_text * math.cos(angle_rad))
123        y = center + int(radius_text * math.sin(angle_rad))
124        draw.text((x-8, y-8), char, font=font_circle, fill=(0, 51, 102, 220))
125
126    # سایه ملایم برای زیبایی
127    seal = seal.filter(ImageFilter.GaussianBlur(radius=0.5))
128
129    return seal
130
131official_seal = create_official_seal()
132
133# ======== ایجاد تصویر گواهی ========
134certificate = Image.new("RGBA", (CERT_WIDTH, CERT_HEIGHT), BACKGROUND_COLOR)
135draw = ImageDraw.Draw(certificate)
136
137# گرادیانت پس زمینه ملایم
138draw_gradient(draw, CERT_WIDTH, CERT_HEIGHT, (255, 255, 250), (230, 240, 255))
139
140# قاب حاشیه‌ای چند لایه
141for i, thickness in enumerate([6, 4, 2]):
142    color_val = 80 - i * 20
143    draw.rectangle(
144        [MARGIN - i*2, MARGIN - i*2, CERT_WIDTH - MARGIN + i*2, CERT_HEIGHT - MARGIN + i*2],
145        outline=(color_val, color_val, color_val)
146    )
147
148# عنوان اصلی
149title_text = "OpenAI – Certificate of Membership"
150bbox = draw.textbbox((0, 0), title_text, font=font_title)
151w = bbox[2] - bbox[0]
152h = bbox[3] - bbox[1]
153draw.text(((CERT_WIDTH - w) / 2, MARGIN + 10), title_text, fill=TITLE_COLOR, font=font_title)
154
155# خط جداکننده زیبا
156line_y = MARGIN + h + 30
157draw.line([(MARGIN + 10, line_y), (CERT_WIDTH - MARGIN - 10, line_y)], fill=(100, 100, 120), width=3)
158
159# نوشتن اطلاعات گواهی
160info_x = MARGIN + 30
161info_y = line_y + 20
162line_spacing = 36
163
164for key, val in cert_info.items():
165    text_line = f"{key}: {val}"
166    draw.text((info_x, info_y), text_line, font=font_text, fill=TEXT_COLOR)
167    info_y += line_spacing
168
169# کد تایید اعتبار
170verification_label = "Verification Code:"
171verification_text = verification_code
172info_y += 20
173draw.text((info_x, info_y), verification_label, font=font_header, fill=TEXT_COLOR)
174draw.text((info_x + 190, info_y), verification_text, font=font_header, fill=(0, 70, 120))
175
176# متن امضای دیجیتال (شکسته به دو خط)
177sig_half = len(digital_signature) // 2
178sig_1 = digital_signature[:sig_half]
179sig_2 = digital_signature[sig_half:]
180draw.text((info_x, info_y + 40), sig_1, font=font_small, fill=(100, 100, 120))
181draw.text((info_x, info_y + 60), sig_2, font=font_small, fill=(100, 100, 120))
182
183# قرار دادن QR Code در پایین سمت راست
184qr_pos = (CERT_WIDTH - qr_img.width - MARGIN - 20, CERT_HEIGHT - qr_img.height - MARGIN - 20)
185
186# قرار دادن مهر رسمی بالای QR Code
187seal_pos = (qr_pos[0], qr_pos[1] - official_seal.height - 15)  # 15 پیکسل فاصله بالاتر
188
189certificate.paste(official_seal, seal_pos, official_seal)
190certificate.paste(qr_img, qr_pos, qr_img)
191
192# ======== متن‌های واترمارک عجیب‌تر و معتبرتر ========
193watermarks = [
194    "AUTHORIZED", "CONFIDENTIAL", "OFFICIAL_USE_ONLY", "SECURE",
195    "AUTHENTICATED", "NON-TRANSFERABLE", "GOVERNMENT APPROVED", "VERIFIED BY BLOCKCHAIN",
196    "HIGHLY CONFIDENTIAL", "DIGITAL SIGNED", "SECURE DOCUMENT", "UNIQUE IDENTIFIER",
197    "ENCRYPTED SEAL",
198    cert_info["Certificate ID"], digital_signature[:16], verification_code,
199    "VALIDATED", "NO_COPY", "OPENAI"
200]
201
202# ======== اضافه کردن واترمارک نامرئی با فونت کوچک و زاویه تصادفی ========
203for _ in range(80):  # تعداد را کمی بیشتر کردم
204    wm_text = random.choice(watermarks)
205    txt_img = Image.new("RGBA", (220, 20), (0, 0, 0, 0))
206    txt_draw = ImageDraw.Draw(txt_img)
207    txt_draw.text((0, 0), wm_text, font=font_small, fill=WATERMARK_COLOR)
208    angle = random.uniform(-25, 25)
209    txt_img = txt_img.rotate(angle, expand=1)
210
211    # موقعیت تصادفی اما دور از لبه‌ها
212    x = random.randint(MARGIN + 10, CERT_WIDTH - 230)
213    y = random.randint(MARGIN + 10, CERT_HEIGHT - 30)
214    certificate.paste(txt_img, (x, y), txt_img)
215
216# ======== اضافه کردن نویز پیکسلی برای ضد جعل ========
217pixels = certificate.load()
218for _ in range(NOISE_INTENSITY):
219    px = random.randint(0, CERT_WIDTH - 1)
220    py = random.randint(0, CERT_HEIGHT - 1)
221    r, g, b, a = pixels[px, py]
222    noise = random.randint(-5, 5)
223    r = max(0, min(255, r + noise))
224    g = max(0, min(255, g + noise))
225    b = max(0, min(255, b + noise))
226    pixels[px, py] = (r, g, b, a)
227
228# ======== ذخیره فایل نهایی ========
229output_file = "openai_certificate_yasin_professional.png"
230certificate.convert("RGB").save(output_file, quality=95)
231print(f"✅ Professional certificate created: {output_file}")
232