如何修改图片的分辨率?(已解决)
本帖最后由 nmgwddj 于 2011-11-25 15:39 编辑我是想通过判断桌面分辨率的大小,来设置一张图片的分辨率,方便来设置桌面背景。
假设我有一张1440*900像素的图片,但是我分辨率确实1024*768的,我需要先把图片改成1024*768,再设置壁纸,不知道这样是否可行,思路是否正确?
看了下_GDIPlus_BitmapSetResolution的用法,是根据英寸来修改的,不知道针对不同分辨率比如1024*768 1366*768 1440*900这些分别都是多少英寸?
希望指教一下谢谢。 本帖最后由 afan 于 2011-11-25 13:58 编辑
首先应该保证比例正确,否则图片会变形。如 1440*900 比例为1.6,若改为 1024*768 比例为1.333 图像就会被拉高。如果是MM,减肥很明显。
为保证不变形,需要先对源图片进行处理,可以有两种方式:
1,源图片上下补边
2,源图片裁切左右
最后再修改尺寸,收工。这里面有对画面的选择性调整问题,如果没有用户交互界面,可能效果不会人性化。 本帖最后由 nmgwddj 于 2011-11-25 14:37 编辑
回复 2# afan
换个方式提问吧,上面的思路很头疼!
假设我现在有2种显示器,一种分辨率是1024*768,一种分辨率是1440*900
而我的壁纸的像素也是1440*900的,我会在设置壁纸前先添加一部分文字或者png上去,增加一些效果。
当然在1440*900分辨率的显示器上显示是正常的,但是到了1024*768的显示器上,我添加的png和文字的宽度就会边窄。
如下两幅图
效果很不理想,上面提出的问题就是想在设置壁纸前先转换一下分辨率,再添加png和文字。
不知道还有没有其他更好的思路。
1440*900 正常状态的字体和png
1024*768 变窄的字体和png
回复 3# nmgwddj
你这个就是我上面说的,拉高了…… 回复 4# afan
{:face (340):}求思路A版 回复afan
我会在设置壁纸前先添加一部分文字或者png上去,增加一些效果。
nmgwddj 发表于 2011-11-25 14:20 http://www.autoitx.com/images/common/back.gif
你不能“后”添加文字吗,为什么要“先”添加好呢 回复 6# seniors
{:face (382):}这个这个不太明白,已经设置为桌面了,如何再添加文字和png呢?
思路不应该是先添加好png和文字,整合到一个bmp里面再设置桌面壁纸吗? 风景还好说(只要没有太阳或其它圆形参照物),直接拉伸修改至你需要的尺寸,再添加图片及文字。#include <GDIPlus.au3>
_PicChangeSize('1.jpg', '2.jpg', 1024, 768)
Func _PicChangeSize($sFile, $sFile_new, $new_W, $new_H)
_GDIPlus_Startup()
Local $hImage = _GDIPlus_ImageLoadFromFile($sFile)
Local $hGraphics = _GDIPlus_ImageGetGraphicsContext($hImage)
Local $hBmp = _GDIPlus_BitmapCreateFromGraphics($new_W, $new_H, $hGraphics)
Local $hImage_New = _GDIPlus_ImageGetGraphicsContext($hBmp)
_GDIPlus_GraphicsDrawImageRect($hImage_New, $hImage, 0, 0, $new_W, $new_H)
_GDIPlus_ImageSaveToFile($hBmp, $sFile_new)
_GDIPlus_GraphicsDispose($hImage_New)
_GDIPlus_BitmapDispose($hBmp)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
EndFunc ;==>_PicChangeSize 回复 8# afan
感谢感谢,没想到您几分钟就做好了,看到您的思路我表示很无奈,没想到你真的用这种办法解决了。
再次感谢。 回复 8# afan
如果图片从1024*768转到1440*900呢?上面的代码就不能转换了,是否是需要更换一下思路?
看了楼上有位碰说先设置壁纸再添加,不知道如何实现,实在头大了。 回复 10# nmgwddj
从1024*768转到1440*900 怎么不行呢 _PicChangeSize('需修改的.jpg', '修改后的.jpg', 1440, 900) {:face (239):}写错代码,不好意思。 http://www.autoitx.com/forum.php?mod=viewthread&tid=21400&extra=&highlight=png&page=1
参考一下这个吧· 参考一下这个吧·
hzxymkb 发表于 2011-11-25 20:32 http://www.autoitx.com/images/common/back.gif
他是要改尺寸,添加文字及图片水印他已经自行完成了 回复 14# afan
看错了!不好意思!打扰到A大了!
页:
[1]
2