如果我从Photoshop中以RGB 8位复制区域,Clipboard.GetImage()
有黑白图像,但如果我将其更改为索引模式(256)GetImage
则会返回彩色图像。
我也尝试使用GetDataObject
方法,但结果相同。看起来图像格式是memoryBMP但是RGB / 8格式,所以我无法获得全彩色图像。
如何从Photoshop剪贴板格式中将彩色图像检索回我的C#app?
这是我正在使用的代码。图像已保存,但.. ..
如果我以Photoshop模式RGB/8
复制图像中的像素,则将其保存为黑白。
如果模式为index
(256色),则可以保存颜色。
数据中的图像格式为:
[ImageFormat: b96b3caa-0728-11d3-9d7b-0000f81ef32e] MemoryBMP
以下是我的C#代码......
IDataObject data = Clipboard.GetDataObject();
if (data.GetDataPresent(DataFormats.Dib))
{
Bitmap image = (System.Drawing.Image)data.GetData(DataFormats.Dib, false) as Bitmap;
var encoder = ImageCodecInfo.GetImageEncoders().First(c => c.FormatID == ImageFormat.Jpeg.Guid);
var encParams = new EncoderParameters(1);
encParams.Param[0] = new EncoderParameter(Encoder.ColorDepth, 24L);
image.Save("encode.jpg", encoder, encParams);
}
答案 0 :(得分:0)
如果您只想在 Photoshop (或任何图片程序,如画图等)中选择一个矩形区域,请将其粘贴到您的应用中(通过剪贴板)...
试试这样:
//# Get copied data (image) from clipboard
IDataObject data = Clipboard.GetDataObject();
if (data.GetDataPresent(DataFormats.Dib))
{
//# Make into C# bitmap
Bitmap image = (data.GetData(DataFormats.Bitmap,true) as Bitmap);
//# Show in some PictureBox
//pbx.Image = image;
//# Save to disk
image.Save("c:/test//encode_test1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}
在Photoshop中打开图像并选择/复制区域。
在您的应用中,获取图像(我使用按键来运行上述代码的function
)。
在C:\
文件夹中的test
驱动器中找到JPG文件。
如果您创建了PictureBox
对象,则甚至可以在应用中查看“所选区域”图片。