Estoy buscando la forma más eficiente de "cuadrar" una imagen para utilizarla como icono. Por ejemplo, tengo un archivo .png cuyas dimensiones son 24x20. No quiero cambiar la parte de "imagen" de la imagen de ninguna manera, solo quiero agregar píxeles transparentes al borde de la imagen para que se convierte en 24x24. Mi investigación sugiere que necesito crear un lienzo transparente 24x24, pegar mi imagen en esto y luego guardar el resultado. Estoy trabajando en wxpython y me preguntaba si alguien podría guiarme en el proceso. Mejor aún, también tengo instalado PIL, y me preguntaba si no había una forma integrada de hacerlo. Parece que el tipo de operación se llevaría a cabo con bastante regularidad, pero ninguno de los métodos de imagen funciona bien.Relleno de una imagen para usar en wxpython
5
A
Respuesta
3
Uso image.paste para pegar la imagen en un fondo transparente:
import Image
FNAME = '/tmp/test.png'
top = Image.open(FNAME).convert('RGBA')
new_w = new_h = max(top.size)
background = Image.new('RGBA', size = (new_w,new_h), color = (0, 0, 0, 0))
background.paste(top, (0, 0))
background.save('/tmp/result.png')
3
que podría hacerlo con arreglo numpy bastante fácil .. algo como esto
import matplotlib.pyplot as plt
import numpy as np
im1 = plt.imread('your_im.png')
im0 = np.zeros((24, 24, 4), dtype=im1.dtype)
im0[2:-2,:,:] = im1
plt.imsave('your_new_im.png', im0)
+0
Buena idea. Puedes usar 'scipy.pad', especialmente si no son solo 2 filas. – Mark
1
He aquí una aplicación pura wxPython.
import wx
app = wx.PySimpleApp()
# load input bitmap
bitmap = wx.Bitmap('input.png')
# compute dimensions
width, height = bitmap.GetSize()
size = max(width, height)
dx, dy = (size - width)/2, (size - height)/2
# create output bitmap
new_bitmap = wx.EmptyBitmap(size, size)
dc = wx.MemoryDC(new_bitmap)
dc.SetBackground(wx.Brush(wx.Colour(255, 0, 255)))
dc.Clear()
dc.DrawBitmap(bitmap, dx, dy)
del dc
# save output
image = wx.ImageFromBitmap(new_bitmap)
image.SetMaskColour(255, 0, 255)
image.SaveFile('output.png', wx.BITMAP_TYPE_PNG)
Cuestiones relacionadas
- 1. Java imagen de relleno
- 2. CSS: ¿Es posible usar solo una parte de una imagen como relleno de fondo?
- 3. ¿Cómo cambiar el tamaño y dibujar una imagen usando wxpython?
- 4. ¿Es posible usar Panda3D dentro de una aplicación wxPython?
- 5. Cómo agregar relleno para la imagen de fondo
- 6. CSS: Imagen de fondo y relleno
- 7. Div y Margen de imagen/Relleno
- 8. Variable indefinida de la importación al usar wxPython en pydev
- 9. php GD agregar relleno a la imagen
- 10. wxPython barra de progreso
- 11. Adición wxpython en pygame
- 12. C/C++: datos de relleno o relleno en una estructura
- 13. ¿Cómo usar Haar wavelet para detectar LÍNEAS en una imagen?
- 14. ¿Cómo puedo usar CGContextDrawTiledImage para colocar una imagen en mosaico?
- 15. ¿Cómo usar una imagen para el fondo en tkinter?
- 16. Usar Graphics2D para superponer texto en una imagen almacenada y devolver una imagen almacenada
- 17. Imagen UIButton e imagen de fondo, ¿cuál usar para una imagen personalizada?
- 18. Ejemplo de wxPython WebView
- 19. CSS: se deben usar para margen y relleno
- 20. No se puede usar wx.NotificationMessage correctamente con wxPython
- 21. ¿Qué tipo de variable debo usar para guardar una imagen?
- 22. Finalización automática En wxPython wxComboBox
- 23. ¿Cómo usar el relleno para el color de fondo de una celda excel usando C#?
- 24. Tutorial de WXpython
- 25. Focus-follows-mouse en wxPython?
- 26. ¿Línea divisible redimensionable en wxpython?
- 27. extraño problema de relleno alrededor de la imagen
- 28. Crear un polígono relleno con una imagen de mosaico en C#
- 29. ¿Es una mala práctica usar márgenes negativos o relleno en CSS
- 30. Relleno de ceros en una cadena
Lo he aceptado como la respuesta sobre el enfoque numpy porque usa PIL, que ya he instalado. Gracias por la ayuda. –