0
A
回答
3
這應該這樣做。沒有錯誤處理,它不遵循pep8標準,它使用緩慢的PIL操作,並且不使用參數解析庫。我相信還有其他不好的事情。
它通過播種蟒蛇的隨機數發生器與擾亂下的圖像不變的作品。使用大小的散列。由於尺寸沒有改變,因此構建於其上的隨機序列對於共享相同尺寸的所有圖像將是相同的。該序列被用作一對一映射,因此它是可逆的。
該腳本可能會從shell調用兩次以創建兩個圖像「scrambled.png」和「unscrambled.png」。 「Qfhe3.png」是源圖像。
python scramble.py scramble "./Qfhe3.png"
python scramble.py unscramble "./scrambled.png"
-
#scramble.py
from PIL import Image
import sys
import os
import random
def openImage():
return Image.open(sys.argv[2])
def operation():
return sys.argv[1]
def seed(img):
random.seed(hash(img.size))
def getPixels(img):
w, h = img.size
pxs = []
for x in range(w):
for y in range(h):
pxs.append(img.getpixel((x, y)))
return pxs
def scrambledIndex(pxs):
idx = range(len(pxs))
random.shuffle(idx)
return idx
def scramblePixels(img):
seed(img)
pxs = getPixels(img)
idx = scrambledIndex(pxs)
out = []
for i in idx:
out.append(pxs[i])
return out
def unScramblePixels(img):
seed(img)
pxs = getPixels(img)
idx = scrambledIndex(pxs)
out = range(len(pxs))
cur = 0
for i in idx:
out[i] = pxs[cur]
cur += 1
return out
def storePixels(name, size, pxs):
outImg = Image.new("RGB", size)
w, h = size
pxIter = iter(pxs)
for x in range(w):
for y in range(h):
outImg.putpixel((x, y), pxIter.next())
outImg.save(name)
def main():
img = openImage()
if operation() == "scramble":
pxs = scramblePixels(img)
storePixels("scrambled.png", img.size, pxs)
elif operation() == "unscramble":
pxs = unScramblePixels(img)
storePixels("unscrambled.png", img.size, pxs)
else:
sys.exit("Unsupported operation: " + operation())
if __name__ == "__main__":
main()
相關問題
- 1. 手動將RGBA像素與RGB像素混合使用
- 2. 滾動ListView混合圖像
- 3. Android:Gridview圖像混洗/混合
- 4. 圖像混合模式的HDR圖像
- 5. Android GridView:滾動圖像/混合滾動
- 6. Python - 圖像拼接和混合
- 7. Python圖像庫添加劑混合
- 8. 使用iOS混合模式的Android圖像和顏色混合
- 9. 使用Objective C進行圖像混合
- 10. 使用pilimages混合兩個圖像
- 11. OpenCV的圖像混合
- 12. 高斯混合的圖像
- 13. 表視圖混合圖像
- 14. 像素逐像素python重構圖像
- 15. Android - Gridview圖像在滾動上混合
- 16. XamlParseException - 圖像像素手法配合WPF C#/ Kinect的
- 17. 的iOS圖像混合像融合應用
- 18. 圖像混合與面具
- 19. 在java中混合圖像
- 20. 使用matplotlib使用plot和fill_between混合的手動圖例
- 21. 添加劑混合的繪圖圖像
- 22. 使用AVVideoCompositionCoreAnimationTool在CALayer中將靜態圖像與靜態圖像混合使用
- 23. 圖像disppears手動
- 24. 使用動態加載的圖像滾動列表視圖混合圖像的順序
- 25. 使用Python鏡像圖像
- 26. 動畫使用Python中的像素圖或圖像序列與QT4
- 27. Flex像素混合器性能
- 28. rgba像素計算覆蓋混合
- 29. 如何混合兩個ARGB像素?
- 30. 在.net核心上混合像素
可以添加更多的細節這個問題?也許你已經寫了一些示例代碼? –
你在說壓縮圖像嗎? 「混合」是什麼意思? – Jblasco
@ThePiedPipes我想改變位置的像素,做一個混合,然後把它恢復原樣,不幸的是我沒有沒有!代碼還沒有:( –