473,722 Members | 2,293 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Craete tiff Image Page by Page

Hi,

Please help me to write a dll in C# , that will read each pages of a
tiff image from a file and a memory stream object ( need two ways) and
creatre a new tiff image object.The dll should return the combined tif image
object.

Thnks in advance

Rinu G P
Apr 10 '07 #1
10 10714
Last time I needed to mess with multi-page TIFs, I used ImageMan
(ActiveX at the time). Perhaps an off-the-shelf like this would help
here? e.g. ImageMan .Net. (before you ask - I'm just a satisfied
user).

Or google for a free option...

Marc
Apr 10 '07 #2
This sample methods accepts an array of your individual loaded Tiff "pages"
passed in as MemoryStreams, and returns a single MemoryStream containing the
combined images in a single Tiff. To load a Tiff into a memoryStream, just
use a Filestream to read it into a byte array, then create a new MemoryStream
passing the byte array into the overloaded MemoryStream constructor.

public static System.IO.Memor yStream Join(System.IO. MemoryStream[]
tifsStream)
{
EncoderParamete rs ep = null;
System.IO.Memor yStream singleStream = new
System.IO.Memor yStream();

try
{
Image imgTif = Image.FromStrea m(tifsStream[0]);
long imgCompression = GetCompression( imgTif);

if (tifsStream.Len gth 1)
{
//
//Multi-Frame
//
ep = new EncoderParamete rs(2);
ep.Param[0] = new EncoderParamete r(Encoder.SaveF lag,
(long)EncoderVa lue.MultiFrame) ;
ep.Param[1] = new
EncoderParamete r(Encoder.Compr ession, imgCompression) ;
}
else
{
//
//Single page
//
ep = new EncoderParamete rs(1);
ep.Param[0] = new
EncoderParamete r(Encoder.Compr ession, imgCompression) ;
}

//
//Save the first page
//
imgTif.Save(sin gleStream, CodecInfo, ep);

if (tifsStream.Len gth 1)
{
ep = new EncoderParamete rs(2);
ep.Param[0] = new EncoderParamete r(Encoder.SaveF lag,
(long)EncoderVa lue.FrameDimens ionPage);

//
//Add the rest of pages
//
for (int i = 1; i < tifsStream.Leng th; i++)
{
Image pgTif = Image.FromStrea m(tifsStream[i]);

imgCompression = GetCompression( pgTif);
ep.Param[1] = new
EncoderParamete r(Encoder.Compr ession, imgCompression) ;

imgTif.SaveAdd( pgTif, ep);
}

//
//Commit all changes
//
ep = new EncoderParamete rs(1);

ep.Param[0] = new EncoderParamete r(Encoder.SaveF lag,
(long)EncoderVa lue.Flush);
imgTif.SaveAdd( ep);
}
}
catch (Exception)
{

throw;
}
finally
{
if (ep != null)
ep.Dispose();
}

return singleStream;
}

/// <summary>
/// Creates a new byte array (TIF format) by combining an array
of byte arrays(TIF format).
/// </summary>
/// <param name="atif">An array of byte arrays</param>
/// <returns>An byte array.</returns>
public static byte[] Join(byte[][] atif)
{
try
{
System.IO.Memor yStream[] multiStream = new
System.IO.Memor yStream[atif.GetLength( 0)];

for (int i = 0; i < multiStream.Len gth; i++)
multiStream[i] = new System.IO.Memor yStream(atif[i]);

System.IO.Memor yStream ms = Join(multiStrea m);
return ms.ToArray();
}
catch (Exception)
{

throw;
}

}
/// <summary>
/// Splits an input MemoryStream (TIF format) into an array of
MemoryStream (TIF format).
/// </summary>
/// <param name="tifStream ">A MemoryStream (TIF format).</param>
/// <returns>An array of MemoryStream(TI F format).</returns>
public static System.IO.Memor yStream[]
Split(System.IO .MemoryStream tifStream)
{
System.IO.Memor yStream[] multiStream ={};
EncoderParamete rs ep = null;
Image tifImage = null;

try
{
tifImage = Image.FromStrea m(tifStream);

int pgCount = tifImage.GetFra meCount(FrameDi mension.Page);
multiStream = new System.IO.Memor yStream[pgCount];

for (int i = 0; i < pgCount; i++)
{
tifImage.Select ActiveFrame(Fra meDimension.Pag e, i);

multiStream[i] = new System.IO.Memor yStream();
long imgCompression = GetCompression( tifImage);

ep = new EncoderParamete rs(1);
ep.Param[0] = new
EncoderParamete r(Encoder.Compr ession, imgCompression) ;

tifImage.Save(m ultiStream[i], CodecInfo, ep);
}
}
catch (Exception)
{
throw;
}
finally
{
if (ep != null)
ep.Dispose();

if (tifImage != null)
tifImage.Dispos e();
}
return multiStream;
}

--
Site: http://www.eggheadcafe.com
UnBlog: http://petesbloggerama.blogspot.com
Short urls & more: http://ittyurl.net


"Rinu Gopalakrishna Pillai" wrote:
Hi,

Please help me to write a dll in C# , that will read each pages of a
tiff image from a file and a memory stream object ( need two ways) and
creatre a new tiff image object.The dll should return the combined tif image
object.

Thnks in advance

Rinu G P
Apr 10 '07 #3
Hi Peter,

Thanks a lot for your quick response.

Can you please tell me how can I save the created single straem as a single
tiff image.While giving the compression as "LZW" the code is working but in
the case of "CompressionCCI TT4" its showing exception.

Peter can u advise me , is there any better and faster method for returning
the tiff image from a dll other than "Memory buffer"

Thanks and Regards
Rinu G P

"Peter Bromberg [C# MVP]" wrote:
This sample methods accepts an array of your individual loaded Tiff "pages"
passed in as MemoryStreams, and returns a single MemoryStream containing the
combined images in a single Tiff. To load a Tiff into a memoryStream, just
use a Filestream to read it into a byte array, then create a new MemoryStream
passing the byte array into the overloaded MemoryStream constructor.

public static System.IO.Memor yStream Join(System.IO. MemoryStream[]
tifsStream)
{
EncoderParamete rs ep = null;
System.IO.Memor yStream singleStream = new
System.IO.Memor yStream();

try
{
Image imgTif = Image.FromStrea m(tifsStream[0]);
long imgCompression = GetCompression( imgTif);

if (tifsStream.Len gth 1)
{
//
//Multi-Frame
//
ep = new EncoderParamete rs(2);
ep.Param[0] = new EncoderParamete r(Encoder.SaveF lag,
(long)EncoderVa lue.MultiFrame) ;
ep.Param[1] = new
EncoderParamete r(Encoder.Compr ession, imgCompression) ;
}
else
{
//
//Single page
//
ep = new EncoderParamete rs(1);
ep.Param[0] = new
EncoderParamete r(Encoder.Compr ession, imgCompression) ;
}

//
//Save the first page
//
imgTif.Save(sin gleStream, CodecInfo, ep);

if (tifsStream.Len gth 1)
{
ep = new EncoderParamete rs(2);
ep.Param[0] = new EncoderParamete r(Encoder.SaveF lag,
(long)EncoderVa lue.FrameDimens ionPage);

//
//Add the rest of pages
//
for (int i = 1; i < tifsStream.Leng th; i++)
{
Image pgTif = Image.FromStrea m(tifsStream[i]);

imgCompression = GetCompression( pgTif);
ep.Param[1] = new
EncoderParamete r(Encoder.Compr ession, imgCompression) ;

imgTif.SaveAdd( pgTif, ep);
}

//
//Commit all changes
//
ep = new EncoderParamete rs(1);

ep.Param[0] = new EncoderParamete r(Encoder.SaveF lag,
(long)EncoderVa lue.Flush);
imgTif.SaveAdd( ep);
}
}
catch (Exception)
{

throw;
}
finally
{
if (ep != null)
ep.Dispose();
}

return singleStream;
}

/// <summary>
/// Creates a new byte array (TIF format) by combining an array
of byte arrays(TIF format).
/// </summary>
/// <param name="atif">An array of byte arrays</param>
/// <returns>An byte array.</returns>
public static byte[] Join(byte[][] atif)
{
try
{
System.IO.Memor yStream[] multiStream = new
System.IO.Memor yStream[atif.GetLength( 0)];

for (int i = 0; i < multiStream.Len gth; i++)
multiStream[i] = new System.IO.Memor yStream(atif[i]);

System.IO.Memor yStream ms = Join(multiStrea m);
return ms.ToArray();
}
catch (Exception)
{

throw;
}

}
/// <summary>
/// Splits an input MemoryStream (TIF format) into an array of
MemoryStream (TIF format).
/// </summary>
/// <param name="tifStream ">A MemoryStream (TIF format).</param>
/// <returns>An array of MemoryStream(TI F format).</returns>
public static System.IO.Memor yStream[]
Split(System.IO .MemoryStream tifStream)
{
System.IO.Memor yStream[] multiStream ={};
EncoderParamete rs ep = null;
Image tifImage = null;

try
{
tifImage = Image.FromStrea m(tifStream);

int pgCount = tifImage.GetFra meCount(FrameDi mension.Page);
multiStream = new System.IO.Memor yStream[pgCount];

for (int i = 0; i < pgCount; i++)
{
tifImage.Select ActiveFrame(Fra meDimension.Pag e, i);

multiStream[i] = new System.IO.Memor yStream();
long imgCompression = GetCompression( tifImage);

ep = new EncoderParamete rs(1);
ep.Param[0] = new
EncoderParamete r(Encoder.Compr ession, imgCompression) ;

tifImage.Save(m ultiStream[i], CodecInfo, ep);
}
}
catch (Exception)
{
throw;
}
finally
{
if (ep != null)
ep.Dispose();

if (tifImage != null)
tifImage.Dispos e();
}
return multiStream;
}

--
Site: http://www.eggheadcafe.com
UnBlog: http://petesbloggerama.blogspot.com
Short urls & more: http://ittyurl.net


"Rinu Gopalakrishna Pillai" wrote:
Hi,

Please help me to write a dll in C# , that will read each pages of a
tiff image from a file and a memory stream object ( need two ways) and
creatre a new tiff image object.The dll should return the combined tif image
object.

Thnks in advance

Rinu G P
Apr 10 '07 #4
On Tue, 10 Apr 2007 12:38:02 -0700, Rinu Gopalakrishna Pillai
<Ri************ *********@discu ssions.microsof t.comwrote:
Can you please tell me how can I save the created single straem as a
single tiff image.
His example writes to a MemoryStream. But there's not any reason you
can't just use a FileStream instead. Or alternatively, take the resulting
MemoryStream and write it out to a file.
While giving the compression as "LZW" the code is working but in the
case of "CompressionCCI TT4" its showing exception.
What's the exception? Knowing the exception is an important clue in what
the problem is. :)

Pete
Apr 10 '07 #5
The most reliable way is to use a FileStream and simply write out the entire
byte array with the proper file extension. If you use the Image.Save method,
you run the risk of losing your encoding information due to a "not 100%"
implementation by MS.
Peter

--
Site: http://www.eggheadcafe.com
UnBlog: http://petesbloggerama.blogspot.com
Short urls & more: http://ittyurl.net


"Rinu Gopalakrishna Pillai" wrote:
Hi Peter,

Thanks a lot for your quick response.

Can you please tell me how can I save the created single straem as a single
tiff image.While giving the compression as "LZW" the code is working but in
the case of "CompressionCCI TT4" its showing exception.

Peter can u advise me , is there any better and faster method for returning
the tiff image from a dll other than "Memory buffer"

Thanks and Regards
Rinu G P

"Peter Bromberg [C# MVP]" wrote:
This sample methods accepts an array of your individual loaded Tiff "pages"
passed in as MemoryStreams, and returns a single MemoryStream containing the
combined images in a single Tiff. To load a Tiff into a memoryStream, just
use a Filestream to read it into a byte array, then create a new MemoryStream
passing the byte array into the overloaded MemoryStream constructor.

public static System.IO.Memor yStream Join(System.IO. MemoryStream[]
tifsStream)
{
EncoderParamete rs ep = null;
System.IO.Memor yStream singleStream = new
System.IO.Memor yStream();

try
{
Image imgTif = Image.FromStrea m(tifsStream[0]);
long imgCompression = GetCompression( imgTif);

if (tifsStream.Len gth 1)
{
//
//Multi-Frame
//
ep = new EncoderParamete rs(2);
ep.Param[0] = new EncoderParamete r(Encoder.SaveF lag,
(long)EncoderVa lue.MultiFrame) ;
ep.Param[1] = new
EncoderParamete r(Encoder.Compr ession, imgCompression) ;
}
else
{
//
//Single page
//
ep = new EncoderParamete rs(1);
ep.Param[0] = new
EncoderParamete r(Encoder.Compr ession, imgCompression) ;
}

//
//Save the first page
//
imgTif.Save(sin gleStream, CodecInfo, ep);

if (tifsStream.Len gth 1)
{
ep = new EncoderParamete rs(2);
ep.Param[0] = new EncoderParamete r(Encoder.SaveF lag,
(long)EncoderVa lue.FrameDimens ionPage);

//
//Add the rest of pages
//
for (int i = 1; i < tifsStream.Leng th; i++)
{
Image pgTif = Image.FromStrea m(tifsStream[i]);

imgCompression = GetCompression( pgTif);
ep.Param[1] = new
EncoderParamete r(Encoder.Compr ession, imgCompression) ;

imgTif.SaveAdd( pgTif, ep);
}

//
//Commit all changes
//
ep = new EncoderParamete rs(1);

ep.Param[0] = new EncoderParamete r(Encoder.SaveF lag,
(long)EncoderVa lue.Flush);
imgTif.SaveAdd( ep);
}
}
catch (Exception)
{

throw;
}
finally
{
if (ep != null)
ep.Dispose();
}

return singleStream;
}

/// <summary>
/// Creates a new byte array (TIF format) by combining an array
of byte arrays(TIF format).
/// </summary>
/// <param name="atif">An array of byte arrays</param>
/// <returns>An byte array.</returns>
public static byte[] Join(byte[][] atif)
{
try
{
System.IO.Memor yStream[] multiStream = new
System.IO.Memor yStream[atif.GetLength( 0)];

for (int i = 0; i < multiStream.Len gth; i++)
multiStream[i] = new System.IO.Memor yStream(atif[i]);

System.IO.Memor yStream ms = Join(multiStrea m);
return ms.ToArray();
}
catch (Exception)
{

throw;
}

}
/// <summary>
/// Splits an input MemoryStream (TIF format) into an array of
MemoryStream (TIF format).
/// </summary>
/// <param name="tifStream ">A MemoryStream (TIF format).</param>
/// <returns>An array of MemoryStream(TI F format).</returns>
public static System.IO.Memor yStream[]
Split(System.IO .MemoryStream tifStream)
{
System.IO.Memor yStream[] multiStream ={};
EncoderParamete rs ep = null;
Image tifImage = null;

try
{
tifImage = Image.FromStrea m(tifStream);

int pgCount = tifImage.GetFra meCount(FrameDi mension.Page);
multiStream = new System.IO.Memor yStream[pgCount];

for (int i = 0; i < pgCount; i++)
{
tifImage.Select ActiveFrame(Fra meDimension.Pag e, i);

multiStream[i] = new System.IO.Memor yStream();
long imgCompression = GetCompression( tifImage);

ep = new EncoderParamete rs(1);
ep.Param[0] = new
EncoderParamete r(Encoder.Compr ession, imgCompression) ;

tifImage.Save(m ultiStream[i], CodecInfo, ep);
}
}
catch (Exception)
{
throw;
}
finally
{
if (ep != null)
ep.Dispose();

if (tifImage != null)
tifImage.Dispos e();
}
return multiStream;
}

--
Site: http://www.eggheadcafe.com
UnBlog: http://petesbloggerama.blogspot.com
Short urls & more: http://ittyurl.net


"Rinu Gopalakrishna Pillai" wrote:
Hi,
>
Please help me to write a dll in C# , that will read each pages of a
tiff image from a file and a memory stream object ( need two ways) and
creatre a new tiff image object.The dll should return the combined tif image
object.
>
Thnks in advance
>
Rinu G P
Apr 10 '07 #6

can anyone advise me , is there any better and faster method for returning
the tiff image from a dll other than "Memory buffer" .
Apr 11 '07 #7
Hi Peter,

While using "CompressionCCI TT4" the exception is

"System.Argumen tException: Parameter is not valid.
at System.Drawing. Image.Save(Stre am stream, ImageCodecInfo encoder,
EncoderParamete rs encoderParams)"

How can I solve this problem, plz help me.

Thanks and Regards

R G P

"Peter Duniho" wrote:
On Tue, 10 Apr 2007 12:38:02 -0700, Rinu Gopalakrishna Pillai
<Ri************ *********@discu ssions.microsof t.comwrote:
Can you please tell me how can I save the created single straem as a
single tiff image.

His example writes to a MemoryStream. But there's not any reason you
can't just use a FileStream instead. Or alternatively, take the resulting
MemoryStream and write it out to a file.
While giving the compression as "LZW" the code is working but in the
case of "CompressionCCI TT4" its showing exception.

What's the exception? Knowing the exception is an important clue in what
the problem is. :)

Pete
Apr 11 '07 #8
On Apr 11, 6:02 am, Rinu Gopalakrishna Pillai
<RinuGopalakris hnaPil...@discu ssions.microsof t.comwrote:
can anyone advise me , is there any better and faster method for returning
the tiff image from a dll other than "Memory buffer" .
Hi Rinu,

I'm not entirely sure what you're looking for. Are you trying to
create a dll that combines single page tiffs into a single multipage
tiff?

If so, perhaps the following will help you get started:
http://www.bobpowell.net/generating_multipage_tiffs.htm
http://www.bobpowell.net/addframes.htm
HTH
-Jay

Apr 11 '07 #9
On Wed, 11 Apr 2007 07:26:05 -0700, Rinu Gopalakrishna Pillai
<Ri************ *********@discu ssions.microsof t.comwrote:
While using "CompressionCCI TT4" the exception is

"System.Argumen tException: Parameter is not valid.
at System.Drawing. Image.Save(Stre am stream, ImageCodecInfo encoder,
EncoderParamete rs encoderParams)"

How can I solve this problem, plz help me.
Well, sorry to say I don't have an answer. However, it sounds to me as
though the compression type is invalid. You'd think that .NET wouldn't
include it if it didn't support it, but a) there are other examples of
..NET including enumeration values for features it doesn't actually
support, and b) it may be that the compression type is supported only for
reading.

I'm making the assumption that the exact same line of code works fine when
you initialize the compression type to something else. If not, then I
suppose there's a chance the parameters are actually invalid for some
other reason.

You may need someone more familiar with the TIFF support in .NET to answer
the question for you. I don't have the first-hand experience with it to
be able to provide what I'd consider a good answer.

Pete
Apr 11 '07 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
18006
by: Nicolas Guilhot | last post by:
Hi all ! I have a multi-page Tiff image file that I want to convert to PDF. To do so I am using iText library. The conversion is working, but the code execution is very different according to wich iTextSharp.text.Image.getInstance(...) signature I am using : - using code 1 below, the conversion is fast enough but the resulting PDF file is too big (1 817ko sample Tiff file is converted in less than 30 seconds to a 2 764ko PDF file) -...
1
3704
by: Bob | last post by:
I have a query whose results contain the full path (i.e. c:\Images\xxx.tiff) to MUTI-PAGE (All two page) TIFF documents. I need to figure out how to BATCH print the tiff's using the path from the query results. Currently, I have to select each record individually on a continuous form (driven by the query results) and click a cmd button to get the image to open in the windows registered app and print from there. This works fine if...
1
16229
by: Prasad More | last post by:
Hello, I am trying to write a text on Multi-page TIFF image using C# and .NET GDI+. I have written following code to do this. When I execute this code I get "Invalid Parameter User. at System.Drawing.Image.Save" error. public void addAnnotationStampOnImage() { string strStamp = Path.GetFileNameWithoutExtension(_ImageFileName); Size dSize; Image iMulti = Image.FromFile(_ImageFileName);
3
5875
by: T. Davis | last post by:
In C#, I am able to successfully stream a TIFF image that comes from a BLOB field in a database, save it to file, then convert the pages within TIFF file into jpegs (using GDI+) and display on the web (using ASP.NET). However, when I generate the Image object using FromStream (passing in the MemoryStream containing image bytes), an exception of "A generic error occurred in GDI+" is thrown when performing the conversion/save for display....
2
3579
by: Al Reid | last post by:
Is it possible to display an image that is stored on the server as a TIFF image, on an ASP.Net page without the use of an add-in viewer? If so, could someone tell me how to do it? TIA -- Al Reid
5
5992
by: Shane Story | last post by:
I can seem to get the dimensions of a frame in a multiframe tiff. After selecting activeframe, the Width/Height is still really much larger than the page's actual dimensions. When I split a TIFF to several PNG files this causes a problem, becuase the resulting image is (the page to the far left and a lot of black space surrounding it and a filesize that is larger than needed. Any ideas?
6
10034
by: qysbc | last post by:
I have a web page and there is a link to open a TIFF file. The way I do it is to have the server code open a binary stream, set the content type to "image/tiff" and call Response.BinaryWrite. On the client machine, the file type TIFF is associated with Kodak Imaging Preview. This app works on most client machines. When you click on the link, Kodak Imaging Preview will open the TIFF file on the client machine. However, on some machines, the...
3
5827
by: CD | last post by:
An application is logging faxes sent in SQL2000 image column type. I have found code on the net but what it is doing is prompting to save to local which is fine for single page image. Not good for multiple page faxes. I have not been able to locate an example to load in the browser or how to handle multiple image in the one column. 1) Ideally it would be nice to display back in the browser since some may be multiple images. I am not...
1
3454
by: Stedak | last post by:
I have the following class I use to save Tiff's. The problem I have with it is that the final size of the images are very large. If we scan directly to a file the final tiff may be 600-900 kb.s but with this code it is often 4000-5000 kb.s. What am I missing? public class EmrTiff : IDisposable { private string fileName; private ArrayList imageContainer = null;
0
8860
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9236
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
9154
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
9087
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
1
6681
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5995
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4502
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
4762
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
3
2147
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.