আমি শীর্ষ স্ট্যাক ওভারফ্লো ব্যবহারকারীদের অবতার থেকে 2025 হেডশটসের একটি মোজাইক সংকলন করেছি ।
(চিত্রটি পূর্ণ আকার দেখতে এটিতে ক্লিক করুন।)
আপনার কাজটি এমন একটি অ্যালগরিদম লিখতে হবে যা তাদের এই 45 × 45 গ্রিড থেকে 48 × 48 পিক্সেল অবতার ব্যবহার করে অন্য চিত্রের একটি সঠিক ফটোমোস্যাক তৈরি করবে।
চিত্র পরীক্ষা করুন
এখানে পরীক্ষার চিত্রগুলি দেওয়া হচ্ছে। প্রথমটি অবশ্যই একটি হালকা বাল্ব!
(তারা এখানে পুরো আকারের নয় it পূর্ণ আকারে এটি দেখতে একটি ছবিতে ক্লিক করুন The দ্য কিস , অ্যা রবিবার বিকেল ... , স্টিভ জবস এবং গোলকের জন্য অর্ধ আকারের সংস্করণগুলি উপলভ্য ))
উইকিপিডিয়া ধন্যবাদ রেট্রেসড গোলক বাদে সকলের জন্য।
পূর্ণ আকারে এই চিত্রগুলির 48 টি দ্বারা বিভাজ্য মাত্রা রয়েছে The বড়গুলি জেপিইজি থাকতে হয়েছিল যাতে তারা আপলোড করার জন্য যথেষ্ট সংকুচিত হতে পারে।
স্কোরিং
এটি একটি জনপ্রিয়তা প্রতিযোগিতা। মোজাইকগুলির সাথে জমা দেওয়া যা আসল চিত্রগুলিকে সুনির্দিষ্টভাবে চিত্রিত করে ভোট দেওয়া উচিত। আমি এক বা দুই সপ্তাহের মধ্যে সর্বাধিক ভোট দেওয়া উত্তর গ্রহণ করব।
বিধি
আপনার ফোটোমোসাইকগুলি অবশ্যই গ্রিডে সাজিয়ে উপরে মোজাইক থেকে নেওয়া অবিকল্পিত 48 × 48 পিক্সেল অবতারের সাথে সম্পূর্ণরূপে গঠিত ।
আপনি কোনও মোজাইকতে অবতার পুনরায় ব্যবহার করতে পারেন। (প্রকৃতপক্ষে বৃহত্তর পরীক্ষার চিত্রগুলির জন্য আপনাকে অবশ্যই করতে হবে))
আপনার আউটপুটটি দেখান, তবে মনে রাখবেন যে পরীক্ষার চিত্রগুলি খুব বড় এবং স্ট্যাকএক্সচেঞ্জ কেবল 2MB অবধি ছবি পোস্ট করার অনুমতি দেয় । সুতরাং আপনার চিত্রগুলি সংকুচিত করুন বা সেগুলি অন্য কোথাও হোস্ট করুন এবং ছোট সংস্করণ এখানে রাখুন।
বিজয়ী নিশ্চিত হওয়ার জন্য আপনাকে অবশ্যই আপনার হালকা বাল্ব বা গোলক মোজাইকের পিএনজি সংস্করণ সরবরাহ করতে হবে। মোজাইককে আরও ভাল করে তুলতে আপনি অবতারগুলিতে অতিরিক্ত রঙ যুক্ত করছেন না তা নিশ্চিত করার জন্য আমি এগুলি (নীচের দেখুন) যাচাই করতে পারি।
ভ্যালিডেটার
এই পাইথন স্ক্রিপ্টটি কোনও মোজাইক সত্যই অবারিত অবতার ব্যবহার করে কিনা তা পরীক্ষা করতে ব্যবহার করা যেতে পারে। শুধু সেট toValidate
এবং allTiles
। পিক্সেল-পিক্সেলের জন্য জিনিসগুলির হুবহু তুলনা করার কারণে এটি জেপিইজি বা অন্যান্য ক্ষতিকারক বিন্যাসগুলির জন্য কাজ করার সম্ভাবনা নেই।
from PIL import Image, ImageChops
toValidate = 'test.png' #test.png is the mosaic to validate
allTiles = 'avatars.png' #avatars.png is the grid of 2025 48x48 avatars
def equal(img1, img2):
return ImageChops.difference(img1, img2).getbbox() is None
def getTiles(mosaic, (w, h)):
tiles = {}
for i in range(mosaic.size[0] / w):
for j in range(mosaic.size[1] / h):
x, y = i * w, j * h
tiles[(i, j)] = mosaic.crop((x, y, x + w, y + h))
return tiles
def validateMosaic(mosaic, allTiles, tileSize):
w, h = tileSize
if mosaic.size[0] % w != 0 or mosaic.size[1] % h != 0:
print 'Tiles do not fit mosaic.'
elif allTiles.size[0] % w != 0 or allTiles.size[1] % h != 0:
print 'Tiles do not fit allTiles.'
else:
pool = getTiles(allTiles, tileSize)
tiles = getTiles(mosaic, tileSize)
matches = lambda tile: equal(tiles[pos], tile)
success = True
for pos in tiles:
if not any(map(matches, pool.values())):
print 'Tile in row %s, column %s was not found in allTiles.' % (pos[1] + 1, pos[0] + 1)
success = False
if success:
print 'Mosaic is valid.'
return
print 'MOSAIC IS INVALID!'
validateMosaic(Image.open(toValidate).convert('RGB'), Image.open(allTiles).convert('RGB'), (48, 48))
সৌভাগ্য সবার! আমি ফলাফল দেখতে অপেক্ষা করতে পারি না।
দ্রষ্টব্য: আমি জানি ফটোমোসাইক অ্যালগরিদমগুলি অনলাইনে খুঁজে পাওয়া সহজ তবে তারা এখনও এই সাইটে নেই। আমি সত্যিই প্রত্যাশা করছি আমরা সাধারণ "গড় প্রতিটি টালি এবং প্রতিটি গ্রিড স্পেসের চেয়ে আরও আকর্ষণীয় কিছু দেখি এবং তাদের সাথে মেলে" অ্যালগরিদম।